程式語言 - LeetCode - C - 1004. Max Consecutive Ones III



參考資訊:
https://www.cnblogs.com/grandyang/p/14290994.html

題目:


解答:

int max(int a, int b)
{
    return a > b ? a : b;
}

int longestOnes(int* nums, int numsSize, int k)
{
    int r = 0;
    int cnt = 0;
    int left = 0;
    int right = 0;

    for (right = 0; right < numsSize; right++) {
        if (nums[right] == 0) {
            cnt += 1;
        }

        while (cnt > k) {
            if (nums[left] == 0) {
                cnt -= 1;
            }
            left += 1;
        }

        r = max(right - left + 1, r);
    }

    return r;
}