- 博客(5)
- 收藏
- 关注
原创 代码随想录笔记——链表4
相遇时:2(x+y) = x+y+n(y+z) x+y = n(y+z) x = n(y+z)-y = (n-1)(y+z)+z。快慢指针,快指针速度2,慢指针速度1,二者都进环后,快追慢,相对速度1,一定能追上。快指针至少跑一圈才能追上慢指针,慢指针相遇时只跑了一圈。本质上要求x,找出等式关系。快指针从相遇的位置跑了n圈后,再跑z步,就会和从头出发的指针在环形入口时相遇。两个问题:是否有环?
2023-12-06 11:35:43
451
1
原创 代码随想录笔记——链表2
1、获取下标为index的节点的值。index=0就是头结点。那么先对index进行判断。也就是说每次操作的指针都是要处理的节点的上一个,来保证我们能找到要处理的节点。// cur始终是要操作的元素的上一个指针,也就是说cur始终指向要操作的元素。第n个节点前插入节点:保证第0个节点是current->next。尾部插入节点条件:current->next=NULL。删除第n个节点:第n个节点是current->next。考虑超出的情况:index<0,index>size-1。
2023-12-05 13:51:36
406
原创 力扣学习笔记-数组1. 盛最多水的容器
代码2采用双指针法,降低复杂度;左右指针分别从两端开始遍历,每次数值小的那一个往中间移动,面积每增加时更新,两个指针相遇的时候停止遍历。代码1暴力循环:超出时间限制。容器的高:两个元素最小的一个。容器的底:两个元素的距离。条件:找到底*高的最大值。
2023-12-04 16:34:47
359
原创 代码随想录笔记——链表1
cur和head指向的是同一个内存地址,当cur发生变化时,head对应地址里的东西也会变化,所以可以直接返回head。方法2:使用虚拟头结点(dummy node),也就是在原来的头结点前添加一个头结点。1、非头结点的删除: 当前指针直接指向下下一个节点。2、头节点的删除:头结点向后移动一位。注意:C++要删除原来的节点释放内存。方法一:考虑两种情况。
2023-12-01 19:02:33
408
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人