LeetCode 刷题之路(python版)

部署运行你感兴趣的模型镜像
题目
1.两数之和
2.两数相加
3.无重复字符的最长子串
4.寻找两个有序数组的中位数
5.最长回文子串
7.整数反转
8.字符串转换整数 (atoi)
9.回文数
10.正则表达式匹配
11.成水最多的容器
12.整数转罗马数字
13.罗马数字转整数
14.最长公共前缀
15.三数之和
16.最接近的三数之和
17.电话号码的字母组合
18.四数之和
19.删除链表的倒数第N个节点
20.有效的括号
21.合并两个有序链表
22.括号生成
23.合并K个排序链表
24.两两交换链表中的节点
25.k个一组翻转链表
26.删除排序数组中的重复项
27.移除元素
31.下一个排列
32.最长有效括号
33.搜索旋转排序数组
34.在排序数组中查找元素的第一个和最后一个位置
35.搜索插入位置
39.组合总和
40.组合总和 II
41.缺失的第一个正数
42.接雨水
44.通配符匹配
45.跳跃游戏 II
46.全排列
47.全排列 II
48.旋转图像
49.字母异位词分组
50.Pow(x,n)
53.最大子序和
54.螺旋矩阵
55.跳跃游戏
56.合并区间
57.插入区间
58.最后一个单词的长度
59.螺旋矩阵 II
60.第k个排列
61.旋转链表
62.不同路径
63.不同路径 II
64.最小路径和
69.x 的平方根
70.爬楼梯
71.简化路径
72.编辑距离
73.矩阵置零
74.搜索二维矩阵
75.颜色分类
76.最小覆盖子串
78.子集
79.单词搜索
80.删除排序数组中的重复项 II
81.搜索旋转排序数组 II
82.删除排序链表中的重复元素 II
84.柱状图中最大的矩形
85.最大矩形
86.分隔链表
88.合并两个有序数组
90.子集 II
91.解码方法
92.反转链表 II
95.不同的二叉搜索树 II
96.不同的二叉搜索树
98.验证二叉搜索树
100.相同的树
103.二叉树的锯齿形层次遍历
121.买卖股票的最佳时机
122.买卖股票的最佳时机 II
129.求根到叶子节点数字之和
130.被围绕的区域
131.分割回文串
134.加油站
136.只出现一次的数字
137.只出现一次的数字 II
139.单词拆分
141.环形链表
142.环形链表 II
143.重排链表
146.LRU缓存机制
147.对链表进行插入排序
150.逆波兰表达式求值
151.翻转字符串里的单词
152.乘积最大子序列
153.寻找旋转排序数组中的最小值
160.相交链表
162.寻找峰值
164.最大间距
169.求众数
171.位1的个数
174.地下城游戏
179.最大数
189.旋转数组
190.颠倒二进制位
198.打家劫舍
199.二叉树的右视图
201.数字范围按位与
203.移除链表元素
204.计数质数
205.同构字符串
207.课程表
209.长度最小的子数组
210.课程表 II
213.打家劫舍 II
214.最短回文串
216.组合总和 III
217.存在重复元素
221.最大正方形
226.翻转二叉树
228.汇总区间
229.求众数 II
231.2的幂
237.删除链表中的节点
238.除自身以外数组的乘积
239.滑动窗口最大值
240.搜索二维矩阵 II
241.为运算表达式设计优先级
243.最短单词距离
263.丑数
264.丑数 II
268.缺失数字
278.第一个错误的版本
287.寻找重复数
292.Nim 游戏
299.猜数字游戏
300.最长上升子序列
312.戳气球
319.灯泡开关
328.奇偶链表
334.递增的三元子序列
338.比特位计数
343.整数拆分
344.反转字符串
349.两个数组的交集
350.两个数组的交集 II
376.摆动序列
378.有序矩阵中第K小的元素
386.字典序排数
389.找不同
392.判断子序列
394.字符串解码
395.至少有K个重复字符的最长子串
402.移掉K位数字
403.青蛙过河
404.左叶子之和
406.根据身高重建队列
415.字符串相加
447.回旋镖的数量
451.根据字符出现的频率排序
452.用最少数量的箭引爆气球
458.可怜的小猪
475. 供暖器
486.预测赢家
491.递增子序列
496.下一个更大元素 I
503.下一个更大元素 II
523.连续的子数组和
542.01 矩阵
547.朋友圈
560.和为K的子数组
581.最短无序连续子数组
594.最长和谐子序列
655.输出二叉树
658.找到 K 个最接近的元素
661.图片平滑器
673.最长递增子序列的个数
696.计数二进制子串
703.数据流中的第k大元素
704.二分查找
733.图像渲染
735.行星碰撞
747.至少是其他数字两倍的最大数
765.情侣牵手
767.重构字符串
796.旋转字符串
797.所有可能的路径
821.字符的最短距离
830.较大分组的位置
832.翻转图像
836.矩形重叠
841.钥匙和房间
852.山脉数组的峰顶索引
856.括号的分数
867.转置矩阵
870.优势洗牌
871.最低加油次数
873.最长的斐波那契子序列的长度
874.模拟行走机器人
876.链表的中间结点
877.石子游戏
881.救生艇
883.三维形体投影面积
905.按奇偶排序数组
908.最小差值 I
930.和相同的二元子数组
931.下降路径最小和
932.漂亮数组
933.最近的请求次数
956.最高广告牌
967.连续差相同的数字
972.最接近原点的K个点
976.三角形的最大周长
977.有序数组的平方
983.最低票价
984.不含 AAA 或 BBB 的字符串
994.腐烂的橘子
997.找到小镇的法官
1002.查找常用字符
1004.最大连续1的个数 III
1005.K次取反后最大化的数组和
1013.将数组分成和相等的三个部分
1018.可被 5 整除的二进制前缀
1019.链表中的下一个更大节点
1021.删除最外层的括号
1024.视频拼接
1029.两地调度
1030.距离顺序排列矩阵单元格
1033.移动石子直到连续
1034.边框着色
1040.移动石子直到连续 II
1051.高度检查器
1053.交换一次的先前排列
1071.字符串的最大公因子
1078.Bigram 分词
1089.复写零
1090.受标签影响的最大值
1094.拼车
1103.分糖果 II
1105.填充书架
1108.IP 地址无效化
1122.数组的相对排序
1154.一年中的第几天
1162.地图分析

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### LeetCodePython 的解思路及代码示例 #### 使用 Python 标准库的重要性 在解决 LeetCode时,熟悉 Python 标准库能够显著提高效率并简化代码逻辑。Python 提供了许多强大的内置模块和函数,这些工具可以帮助开发者快速处理复杂的数据结构和算法问[^1]。 以下是几个常见的 LeetCode 目及其对应的 Python 解法: --- #### 示例一:有效括号 (LeetCode 20) 此问是经典的栈操作案例。给定一个只包含 `'('` 和 `')'` 的字符串,判断该字符串中的括号是否合法。可以通过模拟栈的操作来验证每一对括号的匹配情况。 ```python def isValid(s: str) -> bool: stack = [] mapping = {")": "(", "}": "{", "]": "["} for char in s: if char in mapping.values(): stack.append(char) elif char in mapping.keys(): if not stack or stack.pop() != mapping[char]: return False return not stack ``` 上述代码利用了字典存储括号之间的映射关系,并通过列表作为栈的基础数据结构完成匹配过程[^2]。 --- #### 示例二:链表反转部分节点 (LeetCode 92 或 类似于引用中的第 4 条) 对于链表类目,通常涉及指针操作以及边界条件的严格控制。以下是一个简单的例子——局部翻转链表的部分节点。 输入样例: - 输入:`head = [1,2,3,4,5], k = 3` - 输出:`[3,2,1,4,5]` 解决方案如下所示: ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def reverseKGroup(head: ListNode, k: int) -> ListNode: dummy = jump = ListNode(0) dummy.next = l = r = head while True: count = 0 while r and count < k: # 判断是否有k个节点待反转 r = r.next count += 1 if count == k: # 如果满足,则执行反转 pre, cur = None, l for _ in range(k): # 反转l到r之前的k个节点 temp = cur.next cur.next = pre pre = cur cur = temp jump.next = pre # 连接已反转部分与剩余未反转部分 jump = l # 移动jump至当前组最后一个节点位置(l现在指向原组最后一位) l = r # 更新下一次循环起点为下一组的第一个节点(r此时位于下一组第一个节点处或者None) else: # 不足k个则无需继续反转 break jump.next = l # 将最后一段不足k个的节点连接起来 return dummy.next # 返回新头结点dummy.next ``` 这段代码实现了对指定长度子序列的逆序排列功能[^4]。 --- #### 示例三:二叉树遍历系列 (LeetCode 144/94/145) 针对二叉树的不同遍历方式(前序、中序、后序),可以采用递归方法轻松实现。下面分别展示这三种基本形式的具体实现方案。 ##### 前序遍历 (Preorder Traversal) ```python def preorderTraversal(root: TreeNode) -> list[int]: result = [] def dfs(node): if node is None: return result.append(node.val) # 访问根节点 dfs(node.left) # 左子树递归访问 dfs(node.right) # 右子树递归访问 dfs(root) return result ``` ##### 中序遍历 (Inorder Traversal) ```python def inorderTraversal(root: TreeNode) -> list[int]: result = [] def dfs(node): if node is None: return dfs(node.left) # 左子树递归访问 result.append(node.val) # 访问根节点 dfs(node.right) # 右子树递归访问 dfs(root) return result ``` ##### 后序遍历 (Postorder Traversal) ```python def postorderTraversal(root: TreeNode) -> list[int]: result = [] def dfs(node): if node is None: return dfs(node.left) # 左子树递归访问 dfs(node.right) # 右子树递归访问 result.append(node.val) # 访问根节点 dfs(root) return result ``` 以上三个本均基于深度优先搜索策略构建而成,区别仅在于何时记录当前节点值的时间点不同而已[^3]。 --- ### 总结 通过对典型 LeetCode 目的解析可以看出,在日常过程中注重积累常用技巧非常重要;比如善用堆栈解决配对问、灵活运用链表双指针技术优化空间性能指标等等。同时也要不断巩固基础理论知识体系,这样才能更好地应对各种复杂的场景需求。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值