本文主要是介绍[M滑动窗口] lc1004. 最大连续1的个数 III(滑动窗口+模板题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 题目来源
- 2. 题目解析
1. 题目来源
链接:1004. 最大连续1的个数 III
题单:
-
- 滑动窗口(定长/不定长/多指针)
- 二、不定长滑动窗口
- §2.1 求最长/最大
2. 题目解析
思路:
- 比较直接的滑动窗口哈,好像也没什么需要注意的点。
前缀和+二分 也不是不能做。官解也提到了这个点。但对于本题来讲,看到就是滑窗,没毛病吧。
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
class Solution {
public:int longestOnes(vector<int>& nums, int k) {int l = 0, r = 0, cnt0 = 0;int n = nums.size();int mx = 0;while (r < n) {int x = nums[r];if (x == 0) cnt0 ++ ;while (cnt0 > k) {if (nums[l] == 0) cnt0 -- ;l ++ ;}mx = max(mx, r - l + 1);r ++ ;}return mx;}
};
这篇关于[M滑动窗口] lc1004. 最大连续1的个数 III(滑动窗口+模板题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!