資料結構與演算法Java版:刪除連結串列的倒數第 n 個節點
阿新 • • 發佈:2021-01-13
題目描述
給定一個連結串列,刪除連結串列的倒數第 n 個節點。例如,給定一個連結串列: 1 -> 2 -> 3 -> 4 -> 5, 和 n = 2。當刪除了倒數第二個節點後,連結串列變為 1 -> 2 -> 3 -> 5。
你可以假設,給定的 n 是有效的。額外要求就是,要在一趟掃描中實現,即時間複雜度是 O(n)。
方法
快慢指標。
public static Node deleteLastn(Node head, int n) {
Node fast = head;
Node low = head;
if(length(head)==n) {
return head.next;
}
while(n>0) {
fast=fast.next;
n--;
}
while (fast.next != null) {
fast = fast.next;
low = low.next;
}
low.next = low.next.next;
return head;
}
這裡要注意一個特殊情況,即n=連結串列長度時。