摘要: 方法一(删除头结点时另做考虑) class Solution { public: ListNode* removeElements(ListNode* head, int val) { if(head!=NULL && head->val==val) { head=head->next; } if( 阅读全文
posted @ 2019-11-17 20:01 任仁人 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 1:迭代法 假设存在链表 1 → 2 → 3 → Ø,我们想要把它改成 Ø ← 1 ← 2 ← 3。 在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引 阅读全文
posted @ 2019-11-17 17:26 任仁人 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 反转链表 让我们从一个经典问题开始: 反转一个单链表。 一种解决方案是按原始顺序迭代结点,并将它们逐个移动到列表的头部。似乎很难理解。我们先用一个例子来说明我们的算法。 算法概述 让我们看一个例子: 请记住,黑色结点 23 是原始的头结点。 1. 首先,我们将黑色结点的下一个结点(即结点 6)移动到 阅读全文
posted @ 2019-11-17 15:30 任仁人 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 很多题解没有讲清楚非环部分的长度与相遇点到环起点那部分环之间为何是相等的这个数学关系。这里我就补充下为何他们是相等的。假设非环部分的长度是x,从环起点到相遇点的长度是y。环的长度是c。现在走的慢的那个指针走过的长度肯定是x+n1*c+y,走的快的那个指针的速度是走的慢的那个指针速度的两倍。这意味着走 阅读全文
posted @ 2019-11-17 12:05 任仁人 阅读(122) 评论(0) 推荐(0) 编辑