题目描述
引入:链表
public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
}
①ListNode的head为0则为空链表;
②ListNode.next指向下一节点的地址;
③ListNode.val当前节点地址的值;
解题
public class Solution {
public ListNode RemoveNthFromEnd(ListNode head, int n) {
ListNode result = new ListNode(0);
result.next = head;
ListNode f = result;
ListNode s = result;
for (int i = 0; i < n; i++)
{
f = f.next;
}
while (f.next != null)
{
f = f.next;
s = s.next;
}
s.next = s.next.next;
return result.next;
}
}
问答:
①快指针为什么先走n步数:
- 快指针先走n步,然后快慢指针一起走,直到快指针走到尾;
- 快慢指针路程一样,慢指针比快指针少走n步,也就是说快指针走完,慢指针正好走到倒数第n个点