删除链表的倒数第n个节点

给定一个链表,删除链表的倒数第 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 }

 

posted @ 2020-03-16 17:41  海绵爱上星  阅读(128)  评论(0编辑  收藏  举报