- 博客(5)
- 收藏
- 关注
原创 力扣#双指针 移动零283
一个指针 left 记录【当前应该放置非零元素的位置】,一个指针 right【遍历数组】。当遇到非零元素时,把它放到前面的位置,同时指针 left 后移,最后再将后面的位置都补上0。遍历了两次但只需要交换一次。补上0的操作就又需要一次遍历,或者可不可以在遍历的途中同时处理 0 呢?后面自然剩下的都是 0。交换了两次但只需要遍历一次。时间复杂度:O(n),其中 n 为序列长度。这里需要注意的是,必须在不复制数组的情况下原地对数组进行操作。在遍历的时候交换元素的位置?只需要常数的空间存放若干变量。
2025-03-20 14:39:41
328
原创 力扣#哈希表 字母异位词分组
需要遍历n个字符串,对于每个字符串,需要 O(k)的时间计算每个字母出现的次数,O(∑|)的时间生成哈希表的键,以及 O(1)的时间更新哈希表,因此总时间复杂度是O(n(k+|∑|))。·空间复杂度: O(n(k+|∑|)) ,其中n 是strs 中的字符串的数量,k是strs 中的字符串的最大长度,是字符集,在本题中字符集为所有小写字母,|∑|=26。需要用哈希表存储全部字符串,而记录每个字符串中每个字母出现次数的数组需要的空间为O(∑|),在渐进意义下小于 O(n(k+|∑|)) ,可以忽略不计。
2025-03-05 20:08:51
1076
原创 力扣#哈希表 最长连续序列
比如nums=[3,2,4,5],从3开始,我们可以找到3,4,5这个连续序列;而从2开始我们可以找到2,3,4,4这个连续序列,一定比前者长。- 虽然看起来有双重循环,但每个数字最多被访问两次(作为起点被外层循环访问一次,作为后续数字被内层循环访问一次)要注意以'x-1'为序列起点的序列长度要比以'x'为序列起点的序列长度要长。例如:起点是2 —>找到3—>找到4—>停止,得到长度为3。"先找序列起点的做法可以避免大量重复计算,从起点开始,不断找到下一个连续的数字(+1)。>所属知识点:哈希表。
2025-03-02 23:46:55
355
原创 力扣#哈希表 两数之和
时间复杂度降到O(N),只需遍历一次数组,每次查询补数只需O(1)时间;空间复杂度升到O(N),其中N是数组中的元素数量。可以看出时间复杂度为O(N^2),空间复杂度为O(1)。但是,我们能不能想出一个时间复杂度小于O(N^2)的算法呢?假设你有一本电话本,你想要查找张三的电话号码(12345678910),当你想要找到张三的电话号码时,②如果补数已经存在于哈希表中,说明找到了两个数的和为target,直接返回它俩的索引。Value(值) ——> 类似电话本中的[【号码】,如数字2的索引0。
2025-03-02 22:43:54
486
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人