- 博客(447)
- 收藏
- 关注
原创 单调栈总结
常见做法是从后往前遍历数组,栈顶元素如果小于当前元素就出栈,保持单调性。常见做法是从前往后遍历数组,栈顶元素如果大于当前元素就出栈,保持单调性。自底向上的单调递减栈,一般用来寻找下一个更大的元素。自底向上的单调递增栈,一般用来寻找前一个更小的元素。
2023-10-14 04:03:40
525
原创 滑动窗口总结
主要是缩小窗口的时机:刚好满足条件时缩小,看是否左边有不需要的。不定长滑窗:最标准形式,针对问题可适当简化。定长滑动窗口:缩小窗口的时机是窗口大小达到了。
2023-10-14 03:46:26
89
原创 Rabin-Karp 字符串哈希算法总结
第二种:判断字符串是否相等场景,不用一个个的对字符串进行计算,而是用hash唯一表示一个字符串。第一种回文场景:正序hash值和逆序hash值的计算方法,相等时说明是回文。
2023-10-14 03:29:15
392
原创 leetcode227. 基本计算器 II
注意预处理时需要对负号进行处理,目的是不在遍历过程中再判断处理,麻烦。计算发生在遇到右括号或者是当前运算符的优先级低于栈内符号的优先级时。一个栈用来保存数字,一个栈用来保存计算符号。通用计算器模板,分为两个栈。
2023-08-29 17:21:48
94
原创 leetcode347. 前 K 个高频元素
python自带的堆是小顶堆,所以可以根据元素的重复次数维护一个大小为k的小顶堆。这样堆里的元素就是前k的高频元素了。
2023-08-01 14:56:52
92
原创 面试题 01.05. 一次编辑
长度不相等时都转化为第一个长第二个短,这样在遇到不相同字符的时候,短的字符的指针原地等待1次。分为长度相等和不相等两种情况,长度相等时就逐一判断两个单词之间不相等的个数。
2023-05-25 10:14:58
74
原创 leetcode179. 最大数
def largestNumber(self, nums): """ :type nums: List[int] :rtype: str """ s = map(str,nums) def compare(a,b): if a+b == b+a: return 0 elif a + b > b+a:
2023-05-12 17:36:06
109
原创 926. 将字符串翻转到单调递增
初始状态是分界点位于最前面,也就是将后面所有0变为1所需要的次数就是0的个数。找遍所有分界点将分界点前面的变为0,后面的变为1。之后遍历分界点的位置,在初始状态上进行改变。
2023-05-12 16:25:39
64
原创 leetcode889. 根据前序和后序遍历构造二叉树
现在在我们的递归步骤中,左分支由 pre[1 : L+1] 和 post[0 : L] 重新分支,而右分支将由 pre[L+1 : N] 和 post[L : N-1] 重新分支。所以 pre[1] = post[L-1](因为结点的值具有唯一性),因此 L = post.indexOf(pre[1]) + 1 左分支长度。我们知道左分支的头节点为 pre[1],是前序遍历根节点后面的第一个位置。(根结点) (前序遍历左分支) (前序遍历右分支)(后序遍历左分支) (后序遍历右分支) (根结点)
2023-03-09 16:05:51
110
原创 leetcode139. 单词拆分
遍历整个字符串,转移方程就是当前i位置之前的所有的j, [j:i]是否能组成单词且j是否能被拆分。回溯算法,用一个哈希表记录当前的划分方法是否可以,由于相当于深度优先,如果返回了,说明这种划分方法不行,标记下来防止重复访问。dp定义为以当前位置i为结尾子串的是否能被拆分。动态规划,枚举当前位置之前的所有起点。
2023-03-05 11:36:59
94
原创 leetcode406. 根据身高重建队列
从高到低排序的原因是矮的人插入其所在位置时不会对高的产生影响。这样前面排好了,把矮的人插入其应该所在的位置就行。
2023-02-27 20:53:34
64
原创 leetcode238. 除自身以外数组的乘积
再计算自身右边的数组元素的的乘积,乘以之前存入的当前元素左边的数组元素乘积。先计算自身左边的数组元素的乘积存入答案数组。就是除去当前元素自身以外的数组的乘积。
2023-02-27 19:51:41
95
原创 leetcode128. 最长连续序列
只找最左边的那个端点,找到之后统计最长能达到的长度,并且更新。只用更新端点的值是因为一段区间的中间点是都访问过的不会再取到。为了方便查找用哈希表存储数据。所以+1和-1只会遇到端点。
2023-02-27 17:11:17
140
原创 leetcode62. 不同路径
易发现规律dp[i][j] = dp[i-1][j] + dp[i][j-1]优化一下,只记录上一行和当前行的数据。
2023-02-27 15:33:30
75
原创 leetcode49. 字母异位词分组
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。异位词排序之后变成相同的词,可以作为哈希表的key,排序后相同的key的词就是移位词。
2023-02-27 11:05:06
91
原创 leetcode407. 接雨水 II
和我们访问到的他的四周的元素进行高度的比较,要是高于h,说明当前的位置可以当作新的边界。对访问过的数进行记录,由于我们采用的是优先队列保证了当前h是最小的那个边界出口。基本思路,把每一圈看作是一个围栏,从外向里的缩小这个围栏。
2023-02-27 10:38:50
88
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人