初級-連結串列-刪除連結串列的倒數第N個節點(JavaScript)
阿新 • • 發佈:2019-02-10
給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。
示例:
給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.
說明:
給定的 n 保證是有效的。
進階:
你能嘗試使用一趟掃描實現嗎?
思路:
這道題要用雙指標來實現。先用first指標前進n,然後讓second從head開始和first一起前進,直到first到了末尾,此時second的下一個節點就是要刪除的節點。(另外,若first一開始前進n就已經不在連結串列中了,說明要刪除的節點正是head節點,那麼直接返回head的下一個節點介面。)
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} head * @param {number} n * @return {ListNode} */ var removeNthFromEnd = function(head, n) { let first = head, second = head; while (n > 0) { first = first.next n-- } if (!first) return head.next; // 刪除的是頭節點 while (first.next) { first = first.next; second = second.next; } second.next = second.next.next; return head };