LeetCode 19.刪除連結串列的倒數第 n 個節點
阿新 • • 發佈:2020-08-24
給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
說明:
給定的 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) { ListNode fast = head; ListNode slow = head; for(int j = 0; j < n; j++) { fast = fast.next; } if(fast == null) { //如果刪除的是第一個節點 return head.next; } while(fast.next != null) { fast = fast.next; slow = slow.next; } slow.next = slow.next.next; //刪除slow.next return head; } }