Leetcode 19 删除链表的倒数第N个节点
2019-10-31 本文已影响0人
hekirakuno
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
思路:预先指针+双指针(?)。总之就是让一个指针先走n步,然后两个指针一起走,当先走的到达尾部,后走的就是倒数第N个节点。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
//设置一个长度为n的头结点和尾结点的标记
ListNode pre = new ListNode(0);
pre.next = head;
ListNode start = pre;
ListNode end = pre;
while(n--!=0){
end = end.next;
}
while(end.next!=null){
start = start.next;
end = end.next;
}
start.next = start.next.next;
return pre.next;
}
}