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

力扣hot100_子串_python版本

一、560. 和为 K 的子数组

在这里插入图片描述

  • 思路:这就是一道典型的前缀和的题
  • 代码:
class Solution:def subarraySum(self, nums: List[int], k: int) -> int:presum = [0] * (len(nums) + 1)for i, x in enumerate(nums):presum[i + 1] = presum[i] + x  # 前缀和序列需要n+1个ans = 0cnt = defaultdict(int)for p in presum:ans += cnt[p - k]cnt[p] += 1return ans

二、239. 滑动窗口最大值

在这里插入图片描述

  • 思路1:暴力。这道题如果暴力求解其实很简单,根据描述写就行了,但是复杂度比较高, O ( n 2 ) O(n^2) O(n2)
  • 代码
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:if len(nums) == 1:return numsres = []left, right = 0, kwhile left <= (len(nums)-k):res.append(max(nums[left:right]))left+=1right+=1return res
  • 思路2:单调队列。单调队列分为3步
    1. 入(元素入队尾,并维护单调性(看需要保持单增,还是单减))
    2. 出(元素离开队首)
    3. 记录答案
  • 代码
class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:ans = []q = deque()for i, x in enumerate(nums):# 入while q and nums[q[-1]] <= x:q.pop()  # 删除比x小的元素(找最大值,比x小的就不用看了)q.append(i)  # 加入到队尾(这个队列也是单调的了)# 出if i - q[0] >= k:  # 队首需要离开了(滑窗滑过了)q.popleft()# 记录if i >= k - 1:ans.append(nums[q[0]])retrun ans 

三、76. 最小覆盖子串

在这里插入图片描述

  • 思路:这里很神奇,Counter()这玩儿意可以比较,当然如果没法比较也可以自己写一个比较函数
  • 代码:
class Solution:def minWindow(self, s, t):ansLeft, ansRight = -1, len(s)cntS = Counter()cntT = Counter(t)left = 0for right, word in enumerate(s):cntS[word] += 1while cntS >= cntT:if right - left < ansRight - ansLeft:ansLeft, ansRight = left, rightcntS[s[left]] -= 1left += 1return "" if ansLeft < 0 else s[ansLeft:ansRight+1]

相关文章:

  • 8.Excel:数据验证和下拉列表
  • 大学之大:索邦大学2025.4.27
  • AI翻译LangChain实现的一点有趣思考
  • femap许可冲突
  • DLMS 协议(Green Book) —— AARQ、AARE、RLRQ、RLRE 和 Security Payload 详解
  • 日语学习-日语知识点小记-进阶-JLPT-N2阶段(9):语法单词
  • Linux命令#文件操作
  • WinForm真入门(18)——DateTimePicker‌控件解析
  • 【NVM】管理不同版本的node.js
  • Simulink与C的联合仿真调试
  • 业务校验工具包-validate-utils介绍
  • 【数据可视化-39】2009-2019年亚马逊50大畅销书数据集可视化分析
  • 【网络原理】 网络编程套接字
  • 探索排序算法的奥秘(上):冒泡排序、选择排序、插入排序
  • Babel、core-js、Loader之间的关系和作用全解析
  • 【Google Colab】利用unsloth针对医疗数据集进行大语言模型的快速微调(含跑通原代码)
  • 科技打头阵,创新赢未来——中科视界携千眼狼超高速摄像机亮相第三届科交会
  • 二叉树的前序、中序和后序遍历:详解与实现
  • FastAPI系列06:FastAPI响应(Response)
  • 信号量函数
  • “85后”潘欢欢已任河南中豫融资担保有限公司总经理
  • 夜读丨怀念那个写信的年代
  • 吕国范任河南省人民政府副省长
  • 国家能源局:支持民营企业参股投资核电项目
  • 四川苍溪县教育局通报“工作人员辱骂举报学生”:停职检查
  • 哈马斯同意释放剩余所有以方被扣押人员,以换取停火五年