做网站用windows还是linux,个人做网站平台,个人主页界面设计,网站建设运行环境目录
力扣1004. 最大连续1的个数 III
解析代码 力扣1004. 最大连续1的个数 III
1004. 最大连续1的个数 III - 力扣#xff08;LeetCode#xff09;
难度 中等
给定一个二进制数组 nums 和一个整数 k#xff0c;如果可以翻转最多 k 个 0 #xff0c;则返回 数组中连续 …目录
力扣1004. 最大连续1的个数 III
解析代码 力扣1004. 最大连续1的个数 III
1004. 最大连续1的个数 III - 力扣LeetCode
难度 中等
给定一个二进制数组 nums 和一个整数 k如果可以翻转最多 k 个 0 则返回 数组中连续 1 的最大个数 。
示例 1
输入nums [1,1,1,0,0,0,1,1,1,1,0], K 2
输出6
解释[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1最长的子数组长度为 6。
示例 2
输入nums [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K 3
输出10
解释[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1最长的子数组长度为 10。提示
1 nums.length 10^5nums[i] 不是 0 就是 10 k nums.length
class Solution {
public:int longestOnes(vectorint nums, int k) {}
}; 解析代码
和前两篇滑动窗口的题目一样直接放代码
class Solution {
public:int longestOnes(vectorint nums, int k) {int ret 0;for(int left 0, right 0, zero 0; right nums.size(); right){if(nums[right] 0) zero; // 进窗⼝{while(zero k) // 判断{if(nums[left] 0) zero--; // 出窗⼝{ret max(ret, right - left 1); // 更新结果}}}}return ret;}
};