Max Consecutive Ones II (Leetcode 487)

是一道前向双指针题,类似于flip或者change元素的,可以想象维护一个window来做。

int findMaxConsecutiveOnes(vector& nums) {
        if(nums.empty()) return 0;
        int start = 0, cnt = 0, max_ret = 0;
        for(int i=0; i 1){
                if(nums[start] == 0){
                    cnt--;
                }
                start++;
            }
            max_ret = max(max_ret, i-start+1);
        }
        return max_ret;
    }

第二种方法是用queue,
https://discuss.leetcode.com/topic/75445/java-clean-solution-easily-extensible-to-flipping-k-zero-and-follow-up-handled/2

public int findMaxConsecutiveOnes(int[] nums) {
        if(nums == null || nums.length == 0) return 0;
        Queue q = new LinkedList<>();
        int start = 0, max_ret = 0;
        for(int i=0; i 1){
                start = q.poll() + 1;
            }
            max_ret = Math.max(max_ret, i-start+1);
        }
        return max_ret;
    }

你可能感兴趣的:(Max Consecutive Ones II (Leetcode 487))