题目:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
什么情况用到哑节点?
哑结点 可以用来简化某些极端情况,例如列表中只含有一个结点,或需要删除列表的头部,如果删除了头节点,那我们用什么来返回链表?
ListNode dummy = new ListNode(0);
dummy.next = head;
···
return dummy.next;
/**
* 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) {
ListNode dummy = new ListNode(0);//哑节点
dummy.next = head;
ListNode fast = dummy;
ListNode slow = dummy;
for(int i = 1; i <= n+1; i++){
fast = fast.next;
}
while(fast != null){
slow = slow.next;
fast = fast.next;
}
slow.next = slow.next.next;
return dummy.next;
}
}