1. 首页
  2. 软件开发
  3. day-47 最大连续1的个数 III

day-47 最大连续1的个数 III

  • 发布于 2024-09-26
  • 1 次阅读


思路
滑动窗口:如果用left和right表示连续1的左右边界,那么意味着可以把0修改为1的次数为k次

解题过程
用一个变量num记录left和right之间0的个数,当num<=k时,right++,num>k时,将left向右移动,直到不再满足num>k

Code

class Solution {

    public int longestOnes(int[] nums, int k) {

        int len=nums.length;
        int ans=0;
        int left=0;
        int num=0;
        for(int right=0;right<len;right++){

            if(nums[right]!=1)num++;
            while(num>k){

                if(nums[left]!=1)num--;
                left++;
            }
            ans=Math.max(ans,right-left+1);
        }
        return ans;
    }
}

作者:菜卷
链接:https://leetcode.cn/problems/max-consecutive-ones-iii/solutions/2901086/zui-da-lian-xu-1de-ge-shu-iii-by-ashi-ji-le8t/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接: https://blog.csdn.net/qq_53568730/article/details/141813288