- 博客(33)
- 收藏
- 关注
原创 乘积末尾的0
乘积末尾0的个数取决于2和5的因子的数量。因此我们要对所有的数进行统计2和5的因子个数。接下来使用滑动窗口算法: 构建一个滑动窗口,要求保证删除窗口内的元素后,保证剩余元素的乘积末尾0的个数。因此只要窗口内的元素被删除不影响结果,右指针r依旧可以向右移动;否则,需要把左指针l向右移动,直至r到边界结束。
2024-07-12 23:04:15
91
原创 并查集
逆向思维:将要删除的边标记出来,构建图时跳过要删除的边,倒着遍历q查询,遇到2操作,一步一步还原删除边的过程,即往图中一步一步加边。并查集用于处理一些不交集的合并和查询问题,有两个功能:1、判断任意两个元素是否属于同一集合 2、按照要求合并不同的集合。
2024-07-12 22:37:11
118
原创 判断子序列
如果某个字符串的子序列是特殊序列,则该字符串一定是特殊序列,因此只需要判断每个完整的字符串是否为特殊序列。时间复杂度:O(m)空间复杂度:O(1),l为字符串平均长度。空间复杂度:O(1)
2024-06-17 15:21:27
273
原创 最长递增子序列
只需要找出 nums[0..i]中以nums[i] 结束的最长严格递增子序列,以及 nums[i..n−1]中以 nums[i]开始的最长严格递减子序列即可。如果 nums[i]>d的末尾元素 ,则直接加入到 d 数组末尾,并更新 len=len+1;否则,找到第一个比 nums[i]小的数 d[k],并更新 d[k+1]=nums[i]。用d[i]表示长度为i的最长上升序列的末尾元素的最小值,d[i]是单调递增的。时间复杂度:O(n^2)
2023-12-26 19:51:12
477
1
原创 LeetCode30 串联所有单词的子串
思路:枚举开始划分字符串s的位置[0,n-1],将s划分为单词组,每个单词的长度为word[0].size(),用滑动动窗口求解,方法与LeetCode438.找到字符串中所有字母异位词相同。时间复杂度:O(lens×n),其中lens是输入 s 的长度,n 是 words中每个单词的长度。需要做 n 次滑动窗口,每次需要遍历一次 s。空间复杂度:O(m×n),其中 m 是 words的单词数,n 是 words中每个单词的长度。每次滑动窗口时,需要用一个哈希表保存单词频次。
2023-12-21 21:23:41
317
原创 LeetCode871 最低加油次数
我们尝试从优先队列(大根堆)中取出过往油量最大的加油站并进行加油(同时对加油次数。中,含义为使用完剩余的油量,可以去到的最远距离,同时将所在位置。的加油站数量加入优先队列(大根堆,根据油量从小到大排序)中。,代表还没到达(经过)目标位置,继续模拟行进过程。(下次循环),此时由于清空了剩余油量。重复上述过程,直到满足。
2023-12-17 21:02:12
346
1
原创 LeetCode215 数组中的第K个最大元素
只需要根据划分两边后,第 k大数会落在哪一边,来决定对哪边进行递归处理即可。第k大的数也就是升序数组中下标为n-k的元素。
2023-12-14 17:14:17
15
1
原创 LeetCode 1606 找到处理最多请求的服务器
思路:根据每个任务有对应的开始时间和持续时间,用优先队列busy维护二元组(结束时间,服务器编号),按结束时间从早到晚排列。根据任务分配规则,用红黑树free维护空闲服务器编号,根据编号从小到大排列。
2023-12-14 12:02:05
28
1
原创 Trie(字典树)
Trie 树(又叫前缀树或字典树)是一种用于快速查询某个字符串或字符前缀是否存在的数据结构。其核心是使用「边」来代表有无字符,使用「点」来记录是否为「单词结尾」以及「其后续字符串的字符是什么」。
2023-12-08 19:47:16
220
原创 LeetCode32、最长有效括号
从左到右遍历字符串,对于遇到的每个 '(',增加 left ,对于遇到的每个 ')',增加right。这样的做法贪心地考虑了以当前字符下标结尾的有效括号长度,每次当右括号数量多于左括号数量的时候之前的字符我们都扔掉不再考虑,重新从下一个字符开始计算,但这样会漏掉一种情况,就是遍历的时候左括号的数量始终大于右括号的数量,即 (() ,这种时候最长有效括号是求不出来的。如果栈为空,说明当前的右括号为没有被匹配的右括号,将其下标放入栈中来更新「最后一个没有被匹配的右括号的下标」
2023-12-02 22:18:34
18
原创 字符串滑动窗口问题
计算以s[right]结尾的字符串的无重复字符的最长子串长度,若大于result,则更新result。维持一个长度为p.size()的滑动窗口,用hs记录窗口中每一个字母出现的次数。的子串,返回这些子串的起始索引。不考虑答案输出的顺序。指由相同字母重排列形成的字符串(包括相同的字符串)。所有字符的子串,则返回空字符串。,请你找出其中不含有重复字符的。直到窗口中的字符串不再符合要求,所有字符的最小子串。
2023-11-26 21:20:15
20
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人