![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
青衫客36
这个作者很懒,什么都没留下…
展开
-
Leetcode-2. 两数相加
这应该是全网有关这道题最长的代码了吧(hh~)感觉最近学编译原理学的脑子里都是if-else,看到这题第一反应是模拟链表加法的整个过程,居然还AC了,amazing!其实进位完全可以直接参与运算,而不用费那么多心思考虑进位给高位带来的影响,来一份简洁版的吧hh~原创 2023-03-14 18:41:25 · 57 阅读 · 0 评论 -
Acwing-合并两个排序的链表
链表实现的归并排序,创建一个虚拟头结点,最后返回虚拟头结点的next即可。原创 2022-11-04 11:17:38 · 67 阅读 · 0 评论 -
Acwing-反转链表
因为这是单链表,所以我们不能找到一个节点的前驱节点,所以我们要用一个变量来记录前驱节点。使用两个指针,这两个指针一起向前走且间隔为1,然后从前往后遍历,将所有指针的指向都反过来即可。原创 2022-11-04 11:00:57 · 82 阅读 · 0 评论 -
LeetCode-链表中环的入口结点
则当 first 走到 b 时,由于 second 比 first 多走一倍的路,所以 second 已经从 b 开始在环上走了 x 步,可能多余1圈,距离 b 还差 y 步(这是因为第一次相遇点在 b 之后 y 步,我们让 first 退回 b 点,则 second 会退 2y 步,也就是距离 b 点还差 y 步);所以第二次相遇点就是 b 点。证明:如上图所示,a 是起点,b 是环的入口,c 是两个指针的第一次相遇点,ab 之间的距离是 x,bc 之间的距离是 y。本题的做法比较巧妙。转载 2022-10-29 13:18:43 · 133 阅读 · 0 评论 -
LeetCode-链表中倒数第k个节点
单链表只能从前往后遍历,所以,我们可以先计算出链表长度,倒数第k个节点相当于正数第n-k+1个节点,然后我们再从头往后找,找到第n-k+1个节点就可以了。原创 2022-10-29 12:31:44 · 367 阅读 · 0 评论 -
LeetCode-删除链表中重复的节点
我们使用两个指针,第一个指针p存的是上一个保留段的结尾,q存的是下一段的第一个节点,q指针的作用是扫描下一段,把下一段全部扫描结束,如果下一段的长度为1,p指针向后移动一位,否则,p->next = q,直接跳过下一段。本题可能会把头结点删掉,凡是可能会把头结点删掉的,我们一般来说都定义一个虚拟头结点来简化代码。原创 2022-10-29 12:02:10 · 460 阅读 · 0 评论 -
LeetCode-在O(1)时间删除链表结点
本题没有给出前驱节点,所以不能采用让前驱节点的next指针指向当前节点的next指针这种方法,因为当前节点不是最后一个节点,所以下一个节点一定不是空节点,我们可以采用,用下一个节点的值把当前节点的覆盖掉,并且把下一个节点删掉,效果与删除当前节点是一样的,这样的话就不用前驱节点了。原创 2022-10-29 11:23:02 · 63 阅读 · 0 评论 -
LeetCode-从尾到头打印链表
【代码】LeetCode-从尾到头打印链表。原创 2022-10-25 15:28:09 · 115 阅读 · 0 评论