网站排名怎么做,wordpress评论表情插件,苏州seo关键字优化,外国电商设计网站有哪些1004. 最大连续1的个数 III - 力扣#xff08;LeetCode#xff09; 使用滑动窗口的方法来解决这个问题。
思路#xff1a;
使用双指针#xff08;滑动窗口#xff09;#xff0c;定义左右边界 left 和 right。维护窗口内最多包含 k 个 0。当窗口内的 0 超过 k 个时LeetCode 使用滑动窗口的方法来解决这个问题。
思路
使用双指针滑动窗口定义左右边界 left 和 right。维护窗口内最多包含 k 个 0。当窗口内的 0 超过 k 个时移动 left 指针缩小窗口直到窗口内的 0 个数满足条件。计算窗口的最大宽度即最长连续 1 的个数。
代码
def longestOnes(nums, k):left 0max_length 0zero_count 0for right in range(len(nums)):if nums[right] 0:zero_count 1while zero_count k:if nums[left] 0:zero_count - 1left 1max_length max(max_length, right - left 1)return max_length复杂度分析
时间复杂度O(n)其中 nn 是数组的长度每个元素最多被访问两次一次由 right 访问一次由 left 访问。空间复杂度O(1)仅使用了有限的额外变量。
示例
nums [1,1,0,0,1,1,1,0,1,1,0,1]
k 2
print(longestOnes(nums, k)) # 输出 8这个方法通过滑动窗口高效地找到最长的连续 1 的子数组适用于大规模数据。