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

非定长滑动窗口(持续更新)

1493. 删掉一个元素以后全为 1 的最长子数组

题目来源:1493. 删掉一个元素以后全为 1 的最长子数组 - 力扣(LeetCode)

分析:

  1. 因为要求删掉一个元素后的子数组最大长度,所以窗口内允许存在至多一个0(非1元素)
  2. 可以使用字典来存储0元素个数
  3. 如果0元素个数大于 1 ,那么滑动窗口直至窗口内0元素数量等于1
  4. 子数组长度应该 right - left 而不再 +1 因为删掉了其中一个元素0

我的答案:

class Solution:def longestSubarray(self, nums: List[int]) -> int:res = left = 0dic = defaultdict(int)for right,element in enumerate(nums):if element != 1:dic[element] += 1while dic[element] > 1:dic[nums[left]] -= 1left += 1res = max(res,right - left)return res

标准题解:

class Solution:def longestSubarray(self, nums: List[int]) -> int:ans = cnt0 = left = 0for right, x in enumerate(nums):# 1. 入,nums[right] 进入窗口cnt0 += 1 - x  # 维护窗口中的 0 的个数while cnt0 > 1:  # 不符合题目要求# 2. 出,nums[left] 离开窗口cnt0 -= 1 - nums[left]  # 维护窗口中的 0 的个数left += 1# 3. 更新答案,注意不是 right-left+1,因为我们要删掉一个数ans = max(ans, right - left)return ans

 

http://www.lryc.cn/news/600711.html

相关文章:

  • Netty中AbstractChannelHandlerContext源码分析
  • C++连接MySQL完整教程
  • easy-llm-cli的安装和使用
  • Ubuntu安装node-red
  • 广东省省考备考(第五十七天7.26)——数量、言语(强化训练)
  • 【CTF-PWN】【攻防世界题目pwnstack】python攻击脚本ret(checksec、pwngdb、IDA)(含“/bin/sh“)
  • Traffic Lights set的使用
  • AI Agent开发学习系列 - langchain之LCEL(5):如何创建一个Agent?
  • Ansible列出常见操作系统的发行版,Ansible中使用facts变量的两种方式
  • 定义域第一题
  • InfluxDB Flux 查询协议实战应用(二)
  • 修改site-packages位置与pip配置
  • 网络:应用层
  • docker安装问题汇总
  • 一文速通《多元函数微分学》
  • AI Agent开发学习系列 - langchain之LCEL(4):Memory
  • x86汇编语言入门基础(三)汇编指令篇5 串操作
  • 【架构】Docker简单认知构建
  • JAVA学习-练习试用Java实现“深度优先搜索(DFS):实现八数码问题的解法(最短路径搜索)”
  • LangChain4j低阶+高阶Api+日志配置+监听器+重试机制+超时机制
  • 【LeetCode 热题 100】131. 分割回文串——回溯
  • 算法竞赛阶段二-数据结构(35)数据结构单链表模拟实现
  • Android-广播详解
  • golang实现一个定时引擎,功能包括按照corntab的时间任务实时增加、修改、删除定时任务
  • 常见sql深入优化( 二)
  • 一文学会c++list
  • 激光雷达-相机标定工具:支持普通相机和鱼眼相机的交互式标定
  • 二叉搜索树(Binary Search Tree)详解与java实现
  • Linux 如何统计系统上各个用户登录(或者登出)记录出现的次数?
  • Android-三种持久化方式详解