給你乙個鍊錶,刪除鍊錶的倒數第 n 個結點,並且返回鍊錶的頭結點。
高階:你能嘗試使用一趟掃瞄實現嗎?
示例 1:
輸入:head = [1,2,3,4,5], n = 2
輸出:[1,2,3,5]
解析:對鍊錶操作時,一種常用的技巧:新增乙個啞節點,使它的next指向鍊錶的頭結點。
這樣,就不需要對頭結點進行特殊的判斷了。
方法一:
先從頭節點進行一次遍歷,得到鍊錶的長度l。
隨後,再從頭節點對鍊錶進行一次遍歷,當遍歷到第 l-n+1個結點時,就是我們需要刪除的節點。
為了與題目中的n保持一致,節點的編號從1開始,頭節點為編號1的節點。從啞節點開始遍歷 l-n+1個結點,當遍歷到l-n+1個節點時,它的下乙個節點就是我們需要刪除的節點,
這樣我們只需要修改一次指標,就能完成刪除操作。
//列印節點
public
static
void
printnode(listnode head)
}//刪除鍊錶倒數第n個結點
public
static listnode removenthfromend(listnode head, int
n) cur.next =cur.next.next;
listnode ans =dummy.next;
return
ans;
}//獲取鍊錶長度
public
static
intgetlength(listnode head)
return
length;
}}//
結點class
listnode
listnode(
int val)
listnode(
int val, listnode next)
}
刪除鍊錶的倒數第N個結點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點 給定乙個鍊錶 1 2 3 4 5,和 n 2 當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5 class solution listnode dummynode newlistnode 1 dummynode.next head ...
刪除鍊錶的倒數第 N 個結點
給你乙個鍊錶,刪除鍊錶的倒數第 n 個結點,並且返回鍊錶的頭結點。快指標start 慢指標end 此題目需要刪除乙個節點,並且返回新的鍊錶,使用快慢指標法,先移動快指標n個身位,兩個指標相差n 1個節點 再將兩個指標一起移動,當快指標的next為null時,證明已經移動到鍊錶末端,並指向最後乙個節點...
鍊錶 刪除鍊錶的倒數第 N 個結點
記錄 於leetcode 在對鍊錶進行操作時,一種常用的技巧是新增乙個啞節點 dummy node 它的next 指標指向鍊錶的頭節點。這樣一來,我們就不需要對頭節點進行特殊的判斷了。例如,在本題中,如果我們要刪除節點 y,我們需要知道節點 y 的前驅節點 x,並將 x 的指標指向 y 的後繼節點。...