程式語言 - 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 i = 0;
    int r = 0;
    int cnt = 0;
    int left = 0;

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

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

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

    return r;
}