当前位置: 首页 > news >正文

python-leetcode-最大连续1的个数 III

1004. 最大连续1的个数 III - 力扣(LeetCode)

使用滑动窗口的方法来解决这个问题。

思路:

  1. 使用双指针(滑动窗口),定义左右边界 leftright
  2. 维护窗口内最多包含 k 个 0。
  3. 当窗口内的 0 超过 k 个时,移动 left 指针,缩小窗口,直到窗口内的 0 个数满足条件。
  4. 计算窗口的最大宽度,即最长连续 1 的个数。

代码:

def longestOnes(nums, k):
    left = 0
    max_length = 0
    zero_count = 0

    for right in range(len(nums)):
        if nums[right] == 0:
            zero_count += 1
        
        while zero_count > k:
            if nums[left] == 0:
                zero_count -= 1
            left += 1
        
        max_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 的子数组,适用于大规模数据。

相关文章:

  • 【leetcode hot 100 146】LRU缓存
  • 如何修复 Tauri 发布后程序运行时显示 `asset not found: index.html` 的问题
  • 父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法
  • NFS writeback流程中的GFP_NOFS
  • Docker安装部署RabbitMQ
  • 条款1:理解模版性别推导
  • C#带多组标签的Snowflake SQL查询批量数据导出程序
  • linux 命令 grep
  • Embedding模型到底是什么?
  • C++11 编译使用 aws-cpp-sdk
  • 专题地图的立体表达-基于QGIS和PPT的“千层饼”视图制作实践
  • 后端主流数据库分析
  • 前端面试:React生态有哪些?
  • 【从零开始学习计算机科学】数据库系统(八)数据库的备份和恢复
  • 神经网络常用库-torch(基础操作张量)
  • 奇墨科技FinOps云成本优化:精细化IT成本分摊重塑企业云财务管理
  • JavaScript class
  • Axure设计之下拉多选框制作教程C(中继器)
  • 网络安全防护架构有哪些 网络安全防护措施包括
  • 上下文学习思维链COTPrompt工程
  • 湛江市企业网站seo点击软件/简述网络营销的特点及功能
  • 建筑公司网站 新闻/关键洞察力
  • 晋江网站建设公司哪家好/发免费广告电话号码
  • 深夜一个人适合看的电影/长沙网站seo哪家公司好
  • 企业做网站哪家公司好/特色产品推广方案
  • 电子商务网站开发公司/优化大师有必要安装吗