最大連續的1的個數. - 備戰技術面試?力扣提供海量技術面試資源,幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/max-consecutive-ones-iii/
乍一看,這道題很奇怪,什么叫最多翻轉k個0?
我們轉變一下思維,把翻轉k個0,當成滑動窗口中,最多存在的0的個數不超過k,是不是就很好理解了?
此時若k為2,那么right所在的位置,就是有三個0的時候。我們讓left左移,left的位置遇到0的時候,也就是left和right的中間只有兩個0的時候,此時right重新向右移動。如此循環往復,直到right最終到數組的最右邊停下來。
代碼:
class Solution {public int longestOnes(int[] nums, int k) {int left = 0;int right = 0;int zero = 0;int ret = 0;for(right = 0; right < nums.length; right++){if(nums[right] == 0){zero++;}while(zero > k){if(nums[left++] == 0){zero--;}}ret = Math.max(ret , right - left + 1);}return ret;}
}