leetcode1004_最大連續1的個數|||_滑動窗口

1. 解題思路和leetcode424: https://blog.csdn.net/qieyuan4083/article/details/104112465 一樣, 甚至更簡單些.

class Solution {
public:
    int longestOnes(vector<int>& A, int K) {
        int left=0, right=0;
        int zeroCount = 0;
        int res = INT_MIN;
        while(right<A.size()) {
            //統計字符串中0的個數
            if(A[right]==0) zeroCount++;
            //如果0的個數小於K,說明可以完全替換,
            //因此可以計入結果進行比較.
            if(zeroCount<=K) res = max(res, right-left+1);
            right++;
            //如果條件不滿足只需將
            //窗口整體向右移動就好了.
            while(zeroCount>K) {
                if(A[left]==0) zeroCount--;
                left++;
            }
        }
        //注意有可能沒有符合條件的,因此一定要進行判斷.
        return res==INT_MIN ? 0:res;
    }
};

發佈了95 篇原創文章 · 獲贊 26 · 訪問量 2129
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章