力扣hot100_子串_python版本

力扣hot100_子串_python版本

一、560. 和为 K 的子数组

在这里插入图片描述
  • 思路:这就是一道典型的前缀和的题
  • 代码:
classSolution:defsubarraySum(self, nums: List[int], k:int)->int: presum =[0]*(len(nums)+1)for i, x inenumerate(nums): presum[i +1]= presum[i]+ x # 前缀和序列需要n+1个 ans =0 cnt = defaultdict(int)for p in presum: ans += cnt[p - k] cnt[p]+=1return ans 

二、239. 滑动窗口最大值

在这里插入图片描述
  • 思路1:暴力。这道题如果暴力求解其实很简单,根据描述写就行了,但是复杂度比较高,O(n2)O(n^2)O(n2)
  • 代码
classSolution:defmaxSlidingWindow(self, nums: List[int], k:int)-> List[int]:iflen(nums)==1:return nums res =[] left, right =0, k while left <=(len(nums)-k): res.append(max(nums[left:right])) left+=1 right+=1return res 
  • 思路2:单调队列。单调队列分为3步
    1. 入(元素入队尾,并维护单调性(看需要保持单增,还是单减))
    2. 出(元素离开队首)
    3. 记录答案
  • 代码
classSolution:defmaxSlidingWindow(self, nums: List[int], k:int)-> List[int]: ans =[] q = deque()for i, x inenumerate(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()这玩儿意可以比较,当然如果没法比较也可以自己写一个比较函数
  • 代码:
classSolution:defminWindow(self, s, t): ansLeft, ansRight =-1,len(s) cntS = Counter() cntT = Counter(t) left =0for right, word inenumerate(s): cntS[word]+=1while cntS >= cntT:if right - left < ansRight - ansLeft: ansLeft, ansRight = left, right cntS[s[left]]-=1 left +=1return""if ansLeft <0else s[ansLeft:ansRight+1]

Read more

[特殊字符] Python在CentOS系统执行深度指南

[特殊字符] Python在CentOS系统执行深度指南

文章目录 * 1 Python环境安装与配置问题 * 1.1 系统自带Python的限制 * 1.2 安装Python 3的常见问题及解决方案 * 1.3 SSL模块问题解决方案 * 1.4 环境变量配置与管理 * 1.5 软件集合(SCL)替代方案 * 2 包管理与虚拟环境问题 * 2.1 pip包管理器问题与解决方案 * 2.2 虚拟环境的最佳实践 * 2.3 依赖兼容性问题解决 * 2.4 虚拟环境目录结构理解 * 3 模块导入与路径问题 * 3.1 Python模块搜索路径机制 * 3.2 常见模块导入错误与解决 * 3.3 路径配置最佳实践 * 3.4 特殊模块问题处理 * 3.

By Ne0inhk

【强烈推荐】uv 安装多个 Python 版本与使用方法全攻略(替代 pyenv + venv + pip)

【强烈推荐】uv 安装多个 Python 版本与使用方法全攻略(替代 pyenv + venv + pip) 适用于:Ubuntu / Linux / macOS / Windows 本文环境:Ubuntu 20.04 Python 版本:3.8 ~ 3.13 一、uv 是什么?为什么要用 uv? uv 是 Astral(ruff 作者)推出的新一代 Python 工具,目标是 统一并替代 现有的 Python 工具链。 一句话总结: uv = pyenv + venv + pip 的高速合体版 uv 的核心优势

By Ne0inhk

在 VS Code 中使用 Black 格式化 Python 代码

在 VS Code 中使用 Black 格式化 Python 代码的详细指南 Black 是目前 Python 社区最流行的自动格式化工具之一,它的特点是“极少配置、强制风格”:你把代码交给 Black,它按照一套统一规则帮你排版,从此团队不用再纠结“空格还是换行”。 这篇文章会详细说明: 1. Black 是什么、适合做什么 2. 安装 Black(虚拟环境 / 全局) 3. 在 VS Code 中配置 Black 为默认格式化工具 4. 保存时自动格式化 5. 配置 Black 参数(行宽等) 6. 常见问题与排错 一、Black 简介 Black

By Ne0inhk
高效邮件发送系统设计与实现:基于Python和SQLAlchemy的实践

高效邮件发送系统设计与实现:基于Python和SQLAlchemy的实践

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? * 专栏导航: 码农阿豪系列专栏导航 面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️ Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻 Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡 全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀 目录 * 高效邮件发送系统设计与实现:基于Python和SQLAlchemy的实践 * 引言 * 1. 需求分析 * 2. 数据库设计 * 2.1 User 表(存储用户信息) * 2.

By Ne0inhk