
leetcode刷题笔记
文章平均质量分 74
python版本代码
女青年学习日记
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[leetcode]二叉树的遍历(python)
文章目录深度优先遍历dfs前序遍历递归迭代中序遍历递归迭代后序遍历递归迭代宽度优先遍历bfs迭代递归扩展深度优先遍历dfs前序遍历递归def preorderTraversal(root): res = [] def traverse(root): if not root: return res.append(root.val) traverse(root.left) traverse(root.原创 2022-04-09 17:35:54 · 1314 阅读 · 0 评论 -
[leetcode]排列&组合&子集(python)
文章目录排列全排列不重复,T46排列有重复不可复选,T47排列无重复可复选组合组合不重复不可复选,T77组合总和有重复不可复选,T40组合总和无重复可复选,T39子集子集不重复不可复选,T78子集有重复不可复选,T90排列全排列不重复,T46def permute(nums): def backtrack(path): if len(path) == n: res.append(path[:]) for num in nums:原创 2022-04-09 14:42:46 · 428 阅读 · 0 评论 -
[leetcode]归并&快排&堆思想题(python)
文章目录数组中的第K个最大元素自己实现最小堆堆排序快速排序归并排序数据流的中位数寻找两个正序数组的中位数数组中的逆序对数组中的第K个最大元素法1:用堆API做def kthmaxnum(nums, k): heap = [] for num in nums: heapq.heappush(heap, num) if len(heap) > k: heapq.heappop(heap) return heap[0]原创 2022-04-03 19:02:14 · 565 阅读 · 0 评论 -
[leetcode]旋转数组相关问题集锦(python)
文章目录旋转数组(无重复)的最小值,T153旋转数组的最大值旋转降序数组的最小值旋转数组(有重复)的最小值,剑指offer11,T154先升序再降序的最大值索引,T852搜索旋转数组(无重复)(返回索引),T33搜索旋转数组(有重复)(返回True/False),T81搜索旋转数组(有重复)(返回最小索引),面试题10.03旋转数组,T189颠倒字符串中的单词,T151旋转数组(无重复)的最小值,T153题目要点:nums元素值互不相同,请返回旋转数组中的最小元素。class Solution:原创 2022-03-24 17:11:19 · 1691 阅读 · 0 评论 -
[leetcode]原地哈希/数组常见易混淆问题(python)
文章目录寻找重复数1-n,不修改数组,T2871-n,可修改数组,T4420-(n-1),可修改数组,剑指offer03寻找缺失数所有缺失数,T448缺失的第一个正数,T41寻找重复数对于该类问题,如果要求常量的额外空间,一般可考虑原地哈希,如果要求不修改数组,就要考虑别的方法了。1-n,不修改数组,T287题目:给定一个包含n+1个整数的数组nums,数字都在**[1,n]范围内,假设只有一个**重复的整数,返回这个重复的数。要求:不修改nums,只用O(1)的额外空间。求解:如果包含重原创 2022-03-23 21:17:20 · 937 阅读 · 0 评论 -
[leetcode]编辑距离——python版本
Leetcode之编辑距离题目:递归定义dp函数:dp(i,j)表示word1[0…i]转成word2[0…j]的最少操作数def minDistance(word1,word2): def dp(i,j): #递归的终点 #word1走到头,要将word2剩余的字符插入 if i == -1: return j + 1 #word2走到头,要将word1剩余的字符删除 if j ==原创 2022-02-25 17:11:19 · 686 阅读 · 0 评论 -
[Leetcode]其它经典面试题——python版本
本篇文章根据labuladong的算法小抄介绍部分经典面试题,采用python3实现文章目录快速选择算法数组中的第K个最大元素,T215分治算法归并排序添加括号的所有方式,T241区间问题删除被覆盖区间,T1288区间合并,T56区间交集,T986字符串乘法字符串相乘,T43二分查找高效判定子序列判断子序列,T392判断子序列列表最长回文子串最长回文子串,T5接雨水接雨水,T42盛最多水的容器,T11括号相关问题有效的括号,T20使括号有效的最少添加,T921平衡括号字符串的最少插入次数,T1541括号生原创 2022-01-12 17:28:37 · 633 阅读 · 0 评论 -
[Leetcode]数学运算技巧——python版本
本篇文章根据labuladong的算法小抄介绍有关数学运算技巧的常见算法,采用python3实现文章目录常用的位操作计算汉明权重,T191判断整数是否为2的幂次方,T231查找只出现一次的数字,T136阶乘阶乘后的0阶乘后的k个0素数计数质数,T204模幂超级次方,T372如何高效求幂缺失元素丢失的数字,T268缺失和重复元素错误的集合,T645重复元素原地删除有序数组的重复项,T26原地删除有序链表的重复项,T83移除元素,T27移动零,T283随机抽取元素链表随机节点,T382脑筋急转弯Nim游戏,T原创 2022-01-10 16:27:52 · 762 阅读 · 0 评论 -
[Leetcode]BFS广度优先搜索——python版本
本篇文章根据labuladong的算法小抄介绍BFS的常见算法,采用python3实现文章目录简介二叉树的最小深度,T111解开密码锁的最小次数,T752双向BFS优化简介BFS框架:把问题抽象成图,从一个点开始向四周扩散。一般用队列这种数据结构,每次将一个节点周围的所有节点加入队列。对二叉树而言,BFS实际上就是层级遍历。DFS框架:就是回溯算法。区别:BFS找到的路径一定是最短的,但代价是空间复杂度可能比DFS大很多。一般在找最短路径时用BFS,其他时候还是用DFS多。BFS的应用:在一幅图原创 2022-01-08 18:31:00 · 538 阅读 · 0 评论 -
[Leetcode]数据结构之数组——python版本
本篇文章根据labuladong的算法小抄汇总数组的常见算法,采用python3实现文章目录前缀和技巧一维数组中的前缀和区域和检索——数组不可变,T303二维数组中的前缀和二维区域和检索——矩阵不可变,T304和为k的子数组,T560差分数组技巧区间加法,T370航班预定统计,T1109拼车,T1094双指针技巧总结快慢指针判定链表中是否有环,T141返回链表中环的起始位置,T142寻找链表中点,T876寻找链表的倒数第n个结点,T19左右指针二分查找两数之和Ⅱ,T167反转数组,T344滑动窗口算法最小原创 2022-01-08 13:36:17 · 825 阅读 · 0 评论 -
[Leetcode]数据结构之自己设计数据结构——python版本
本篇文章根据labuladong的算法小抄汇总自己设计数据结构的常见算法,采用python3实现文章目录LRU算法LRU缓存机制,T146单调栈结构单调栈模板下一个更大元素Ⅰ,T496每日温度,T739[循环数组],下一个更大元素Ⅱ,T503单调队列滑动窗口最大值,T239二叉堆实现优先级队列二叉堆优先级队列实现上浮swim和下沉sink实现delMax和insert队列实现栈,T225栈实现队列,T232LRU算法LRU(Least Recently Used)算法是一种缓存淘汰机制。计算机的缓存容原创 2022-01-05 14:49:08 · 519 阅读 · 0 评论 -
[Leetcode]数据结构之图——python版本
本篇文章根据labuladong的算法小抄汇总图的常见算法,采用python3实现文章目录图论基础所有可能路径,T797(课程表)判断有向图是否存在环,T207(课程表)拓扑排序,T210二分图判断二分图DFS判断二分图,T785BFS判断二分图,T785可能的二分法,T886Union-Find并查集算法动态连通性DFS的替代方案被围绕的区域,T130等式方程的可满足性,T990Kruskal最小生成树算法以图判树,T261最低成本联通所有城市,T1135连接所有点的最小费用,T1584Dijkstra原创 2022-01-04 14:46:40 · 1060 阅读 · 0 评论 -
[Leetcode]数据结构之链表——python版本
本篇文章根据labuladong的算法小抄汇总链表的常见算法,采用python3实现文章目录单链表基本技巧合并两个有序链表合并k个有序链表单链表的倒数第k个结点删除链表的倒数第N个结点单链表的中点判断链表是否包含环返回链表入环的第一个结点两个链表是否相交反转链表迭代反转整个链表递归反转整个链表递归反转链表前N个结点递归反转一部分链表迭代反转一部分链表K个一组反转链表判断单链表是否回文单链表基本技巧合并两个有序链表class ListNode: def __init__(self,val=0,原创 2021-12-29 16:21:14 · 945 阅读 · 0 评论 -
[Leetcode]动态规划之游戏&贪心问题——python版本
本篇文章根据labuladong的算法小抄汇总动态规划(游戏和贪心问题)的常见算法,采用python3实现文章目录一、用动态规划玩游戏最小路径和K站中转内最便宜的航班高楼扔鸡蛋打家劫舍1打家劫舍2打家劫舍3实现strStr()四键键盘石子游戏构造回文的最小插入次数买卖股票的最佳时机只买卖一次股票买卖的最佳时机不限次数股票买卖的最佳时机含冷冻期不限次数股票买卖的最近时机含手续费不限次数股票买卖问题的最佳时机最多买卖两次股票买卖的最佳时机限制k次二、贪心类型问题区间调度问题无重叠区间,435用最少数量的箭引爆原创 2021-12-28 11:38:06 · 2150 阅读 · 0 评论 -
[Leetcode]动态规划之基本技巧&子序列问题&背包问题——python版本
本篇文章根据labuladong的算法小抄汇总动态规划(子序列问题和背包问题)的常见算法,采用python3实现文章目录一、动态规划基本技巧斐波那契数列零钱兑换下降路径最小和二、子序列类型问题编辑距离最长递增子序列俄罗斯套娃信封问题最大子序和最长公共子序列(LCS)两个字符串的删除操作两个字符串的最小ASCII删除和子序列解题模板思路一:一维dp数组思路二:二维dp数组最长回文子序列三、背包类型问题0-1背包问题子集背包问题:分割等和子集完全背包问题:零钱兑换目标和一、动态规划基本技巧一般形式:求原创 2021-12-16 16:58:32 · 1351 阅读 · 0 评论 -
[Leetcode]回溯算法——python版本
本篇文章根据labuladong的算法小抄汇总回溯算法的相关常见算法,采用python3实现回溯算法框架(DFS)回溯算法就是DFS算法(depth first searc,深度优先搜索算法),本质上是一种暴力穷举算法回溯问题实际上就是决策树的遍历过程:1、路径:已经做出的选择2、选择列表:当前可以做的选择3、结束条件:到达决策树底层,无法再做选择的条件回溯算法的框架result = []def backtrack(路径,选择列表): if 满足结束条件:原创 2021-12-13 20:33:10 · 2080 阅读 · 0 评论 -
[Leetcode]二叉树&二叉搜索树——python版本
二叉树翻转二叉树class TreeNode: def __init__(self,val=0,left=None,right=None): self.val = val self.left = left self.right = rightclass Solution: def invertTree(self,root): if root is None: return None原创 2021-12-11 20:09:12 · 999 阅读 · 0 评论