1004. 最大连续1的个数 III
给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。
最大滑动窗口 只要left与right之间0的个数不超过k,就不断拓展right,超过了就移动left。
右指针每次向右移动一位,左指针只有0的个数超过k时向右移动。
右指针每移动一次都计算一次“最长连续1的个数”。
class Solution {public int longestOnes(int[] nums, int k) {int left = 0, right = 0;int ans = 0, count = 0;while (right < nums.length) {if (nums[right] == 0) {count++;}while (count > k) {if (nums[left] == 0) {count--;}left++;}ans = Math.max(ans,right - left + 1);right++;}return ans;}
}
本文发布于:2024-01-27 21:10:36,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063610352661.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |