做网站设计需要多少钱,陕西手机网站建设,有什么网站可以免费注册,在家做网站或ps挣钱接活个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试#xff1f;力扣提供海量技术面试资源#xff0c;帮助你高效提升编程技能#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…个人主页Lei宝啊
愿所有美好如期而遇 力扣LeetCode官网 - 全球极客挚爱的技术成长平台备战技术面试力扣提供海量技术面试资源帮助你高效提升编程技能轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/max-consecutive-ones-iii/ 算法原理
滑动窗口其实就是种双指针只是这种双指针只向后移动不会回退具有单调性也就是说整个过程中left和right只会。
本题去反转0反转个数为k也就是说可以往后遍历为0记录一次没超过k继续向后走超过k则使左边向右走过一个0右边继续向后走我们画图来看。
图示 以此类推下面不再继续画。
代码
class Solution {
public:int longestOnes(vectorint nums, int k) {int count 0 , len 0;for(int left 0, right 0; right nums.size(); right){if(nums[right] 0){count;while(count k)if(nums[left] 0){count--;} } len max(len, right-left1); }return len;}
};