给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
1 public class T19 { 2 3 public ListNode removeNthFromEnd(ListNode head, int n) { 4 ListNode dummy = new ListNode(-1); 5 dummy.next = head; 6 ListNode fast = dummy; 7 ListNode slow = dummy; 8 for (int i = 0; i < n; i++) { 9 fast = fast.next; 10 } 11 while (fast != null) { 12 fast = fast.next; 13 slow = slow.next; 14 } 15 slow.next = slow.next.next; 16 return dummy.next; 17 } 18 }