![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 57
阿栗要努力
talk is cheap, show me the code
展开
-
快排 + 二分
一直觉得快排跟二分很像,大家也都有很多变种,在此整理一下快排的特点是,需要一个pivort,让左边比他大,右边比他小(反之亦然),每次排序都有一个数的位置被确定两种写法其实是一种经典partition写在一个函数里class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: def quicksort(start,end): idx = random.randi原创 2022-04-05 00:48:13 · 195 阅读 · 0 评论 -
【力扣十道】二叉树
刷题来劲了啊,让我们先膜一下神,就算不能去,也是很快乐的,刷完20道然后复习一下操作系统我就要去“地狱”了100. 简单-相同的树class Solution: def isSameTree(self, p: TreeNode, q: TreeNode) -> bool: if not p and not q : return True elif not p or not q : return False原创 2021-08-23 20:37:21 · 75 阅读 · 0 评论 -
【力扣十道】双指针
双指针觉得写过很多次了嘛,但是没有笔记,可能=滑动窗口要点就是快指针每次都走 慢指针看条件走26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II通解:class Solution: def removeDuplicates(self, nums: List[int]) -> int: n = len(nums) def sove(k): fast = slow = k while fast原创 2021-08-12 16:04:01 · 46 阅读 · 0 评论 -
【力扣十道】回溯
好久没写,仍然是模版方法思路简述:递归调用def backtrack(State,判断条件): if 满足什么条件就可以将State加入到res: res.append(S) return if 怎么怎么: backtrack(State,条件变化)res =[]backtrack(初始状态)return res22. 括号生成class Solution: def generateParenthesis(self, n: int) -> List[str]:原创 2021-08-04 18:56:59 · 73 阅读 · 0 评论 -
【力扣十道】dp动态规划
虽然树递归什么的我放弃了,很烦,但是来写dp了,就熬着呗,煎和熬都是变美味的方法dp对我来说也是三步:建dp数组初始化下标0的位置!!!不要看全局,把自己放在j这个位置想当前的局部最大该怎么算返回最大值198. 中等-打家劫舍213.中等-打家劫舍II把环拆开,劫他们两次哭哭不敢写树状dp,再写两道普通的再树状62. 不同路径你就想 你站在i,j的最多路径怎么算啊,不要想全局啊不要想全局class Solution: def uniquePaths(self, m: int原创 2021-06-13 17:34:10 · 75 阅读 · 0 评论 -
【力扣十道】彻底解决滑动窗口
最近比较艰难啊,不足的地方好多,就当是打怪升级路漫漫了我们统一思路都是:while里针对right作出改变判断特殊条件是否满足,(如果窗口不固定在这步移动left)每步right都要走,(如果固定窗口在这步移动left)这样就可以做一个无情的代码机器(不用考虑滑动窗口现在的是框住的还是下一个的条件之类的,无脑刷就完事了)类型一:滑动窗口固定简单-643. 子数组最大平均数 I求滑动窗口的最大平均数中等-1423. 可获得的最大点数说是从两边取最大,其实是求剩余最少,就是上一题求最大平原创 2021-06-12 20:56:25 · 269 阅读 · 0 评论 -
【力扣】常见又想不起来
快慢双指针前缀和https://leetcode-cn.com/problems/count-of-range-sum/solution/class Solution: def countRangeSum(self, nums: List[int], lower: int, upper: int) -> int: res, pre, now = 0, [0], 0 for n in nums: now += n原创 2021-05-18 13:57:39 · 49 阅读 · 0 评论 -
[leetcode]经典二分查找+python快速二分查找
bisect 二分查找库bisect二分查找库import bisectdata=[5,3,6,2,8]data.sort()dataOut:[2, 3, 5, 6, 8]insort和bisect#查找该数值将会被插入的位置,并将其插入bisect.insort(data,4)print(data)Out:[2, 3, 4, 5, 6, 8]#查找该数值将会被插入的位置并返回,但是并不将其插入bisect.bisect(data,2)Out: 1insort_le原创 2021-02-03 14:45:42 · 228 阅读 · 0 评论 -
【力扣】通俗易懂并查集·月整理
更复杂的并查集内容在https://zhuanlan.zhihu.com/p/93647900/我们只需要知道并查集能帮助我们做什么,和代码框架解读一.并查集通俗理解通俗来说就是用一个二维矩阵,起初大家都是孤立的然后某个节点不断得进行势力扩张,合并其他节点,比如初始矩阵如下:[[0,1,2][3,4,5][6,7,8]]然后进行merge 操作,比如merge(2,1),merge(2,4),merge(2,7),merge(2,8)那么矩阵变成[[0,2,2][3,2,5][6,2,原创 2021-01-30 23:42:47 · 227 阅读 · 0 评论