- 博客(12)
- 收藏
- 关注
原创 LeetCode刷题day4——链表part2
我突然想到:可能有的人觉得最快应该是慢指针走到环入口的时候,快指针刚好已经提前走到环入口处了,那注意此时n不可能是0,如果是0,y=0,则x = x,相当于环入口那一刻相遇,但是x那一段线段路程,他两是不可能相遇的,所以n至少是1在里面转了一圈刚好到环入口才有可能相遇。图示,当慢指针(绿色)进入环的时候,快指针(红色)可以在环上的任意位置,最坏的情况就是快指针在慢指针前面一个结点,而按照相对运动来说,假设环有n个结点,则快指针相对慢指针运动n-1个单位时间即可追上。所以+n(y+z);
2024-06-21 23:51:25
1052
原创 LeetCode刷题day3——链表part1
问题:1.不知道初始化什么对象,以及里面要定义哪些值。2.index非法情况怎么具体在代码中体现。3.边界处理不到位,比如=size =0这些我还自己分开讨论,其实可以写在一起。所以如果不定义构造函数使用默认构造函数的话,在初始化的时候就不能直接给变量赋值!注意卡哥说的在C++里面,要自己定义,leetcode里面默认的是可以直接赋值的。这个题是二刷了一开始这个思路就是利用虚拟头结点,但是中间很多小细节都考虑不到,例如初始化一个新的链表,循环条件的写法等。考虑用双指针法,但自己想的时候还是串联不起来思路。
2024-06-21 09:35:16
453
原创 LeetCode刷题day11——栈和队列part2
如果用排序的话:都不满足题目复杂度要求,那么借助哈希表。统计元素出现的频率用map,但map本身是对key(存储元素)排序的,本题需要val(存储元素出现的次数)排序,所以复杂度是nlogn。那么考虑用优先级队列。
2024-06-17 23:08:24
1082
1
原创 LeetCode刷题day10——栈与队列
常量引用版本用于从已存在的对象中复制数据,而右值引用版本则用于从即将销毁的对象中移动数据,从而优化性能和资源利用。选择合适的函数取决于你的具体需求和对象的状态(是否为临时对象)。
2024-06-17 15:40:05
831
原创 LeetCode刷题day9——字符串part2
151.翻转字符串里的单词建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。 题目链接/文章讲解/视频讲解思路:(1)移除多余空格(2)将整个字符串反转(3)将每个单词反转其中翻转每个单词的时候,卡哥的代码更简洁:本题收获1、split用法:C++中split的实现2、erase删除元素用法,O(n)时间复杂度:earse用法3、resize(重新设置):resize用法卡码网:55.右旋转字符串题目链接/文章讲解自己思路:将需
2024-06-14 23:14:51
263
2
原创 LeetCode刷题day8——字符串part1
在C++中使用std::reverse函数来反转字符数组(或更一般的数组/容器)中的前k个元素时,要注意的是std::reverse函数的第二个参数是一个不包含的上限,即它指向的是要反转范围之外的一个位置。建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数。2、数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。
2024-06-14 16:58:13
350
2
原创 LeetCode刷题day7——哈希表part2
建议: 要比较一下,本题和 454.四数相加II 的区别,为什么 454.四数相加II 会简单很多,这个想明白了,对本题理解就深刻了。巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开发也是这样。可以看出很垃圾,,剪枝和去重很多条件都没考虑到位,经过看卡哥的代码,然后一点点对应修改现在的缺陷,并通过打印日志来看自己哪里有问题,最终AC。建议:本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,
2024-06-14 10:48:09
743
原创 LeetCode刷题day6——哈希表part1
std::unique 函数是 C++ 标准库中的一个算法,它会将相邻的重复元素移到容器的尾部,并返回一个指向新的逻辑末尾的迭代器。看完代码随想录思路:字符映射到数组也就是哈希表的索引下标上,因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25。那么判断元素是否出现,这个元素就要作为key,所以数组中的元素作为key,有key对应的就是value,value用来存下标。这是一个标准的C++数组声明,表示一个包含26个整数的数组,并且所有元素都初始化为0。
2024-06-12 01:02:23
1057
1
原创 LeetCode刷题day2——数组part2
数组其实是有序的, 过负数平方之后可能成为最大数了。所以数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。排序排了半天只知道两个两个比较,还有个外层循环不知道怎么写…sort一行直接秒杀我,,我可真是个菜鸡。1、先给数组平方再排序。
2024-06-11 16:07:03
309
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人