- 博客(4)
- 收藏
- 关注
原创 代码随想录算法训练营day4【C】| 24.两两交换链表中的节点、707. 设计链表、206. 反转链表
2、那么链表主体目前有两个部分:两个未处理的结点和剩余处理好的链表(此处注意不是一个未处理的结点,因为本题的目的是实现两两结点的互换)4、链表迭代退出的条件需要格外上心,这里退出条件是:如果cur当前遍历到了最后一个节点,或者倒数第二个节点,就退出循环;1、现在在链表的基础操作上,基本上可以做到“指哪打哪”,这也是做代码题最基本的要求,但是这实际上花了我不少的时间;1、正如day3指出的,先将特殊情况的链表返回,即不用翻转的;3、然后基于目前的链表主体,得到处理好的链表,然后返回头结点;
2024-01-13 23:34:32
706
原创 代码随想录算法训练营day3| 203.移除链表元素、707. 设计链表、206. 反转链表
分析:将后面所有的结点都想成了一个结点,其实后面是一串,所以应该接到一串结点的最后面,即head->next->next = head,这里head->next就是reversed链表结尾的结点。2、关于index超出范围的判断需要想清楚,在这个题中,因为涉及对于index的超范围的判断,因此循环不好用for,然后用index作为退出条件。3、考虑退出的规模,即一个结点都不剩,因为只要剩一个,就需要判断是否需要删除,并且将退出判断写在整个函数最前面,即“if(head == NULL)”。
2024-01-12 00:00:00
2026
原创 代码随想录算法训练营day2| 977. 有序数组的平方、 209.长度最小的子数组、 59.螺旋矩阵II
对于**returnColumnSizes:要传递的是的是一个数组,这个数组存储了每一列的尺寸,因此需要传递进来的是一个数组指针的地址(或者说是一个数组指针的指针),即**returnColumnSizes。那么*returnColumnSizes就是这个这个数组指针的内容,即数组的地址类似于 int a[N]中的a,因此(*returnColumnSizes)[i]类似于a[i],即数组的内容。通过59题,反复揣摩一个全局的二维数组建立的方法,和如何将一个一维数组的指针的地址传入函数。
2024-01-11 00:16:34
432
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
在双指针法中,并不需要在nums[slow] = nums[fast]后继续从原始数组的当前位置遍历,因为本质上,原始数组并没有被修改,只是将数据给了新数组;1、(*)循环体中的变量涉及边界时要格外注意,比如此题的middle,这里的边界时left和right,而非0和right;要想清楚所谓边界的具体含义,在本题中,有两个边界,一个是退出边界,另一个是重置边界,一定要注意前后统一。问题:测试用例的数组的尾部都是val,因此在第5行,fast会到numsSize,从而溢出。初始化时:left = 0;
2024-01-10 10:43:35
324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人