讨论/题目交流/🏆 第 161 场力扣周赛/
🏆 第 161 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

4 分 - 交换字符使得字符串相同
4 分 - 统计「优美子数组」
5 分 - 移除无效的括号
6 分 - 检查「好数组」

展开讨论
力扣 (LeetCode)发起于 2019-11-03
最近编辑于 2019-11-03

第一题

class Solution {
    public int minimumSwap(String s1, String s2) {
        if(s1.length() != s2.length())
            return -1;
        if(s1.length() == 0 && s2.length() == 0)
            return 0;
        int n = s1.length();
        int swap1 = 0,swap2 = 0;
        for(int i = 0; i <n; i++){
            if(s1.charAt(i) == s2.charAt(i))
                continue;
            if(s1.charAt(i) == 'x' && s2.charAt(i) == 'y'){
                ++swap1;
            }else{
                ++swap2;
            }
        }
        if(swap1%2 != swap2%2)
            return -1;
        if(swap1%2 == 0){
            return swap1/2 + swap2/2;
        }else{
            return swap1/2 + swap2/2 + 2;
        }
    }
}

第二题

class Solution {
    public int numberOfSubarrays(int[] nums, int k) {
        if(nums == null || nums.length == 0)
            return 0;
        int len = nums.length;
        List<Integer> good = new ArrayList<Integer>();
        good.add(-1);
        for(int i=0; i< len; i++){
            if(nums[i] % 2 == 1)
                good.add(i);
        }
        good.add(len);
        int size = good.size();
        if(size < k+2)
            return 0;
        int res = 0;
        for(int j = 1; j<size-k; j++){
            int pre = good.get(j) - good.get(j-1);
            int pro = good.get(j+k) - good.get(j+k-1);
            res += pre*pro;
        }
        return res;
    }
}
2
展开全部 25 讨论