1. 程式人生 > 其它 >資料結構與演算法Java版:刪除連結串列的倒數第 n 個節點

資料結構與演算法Java版:刪除連結串列的倒數第 n 個節點

技術標籤:資料結構Java版資料結構連結串列java

題目描述

給定一個連結串列,刪除連結串列的倒數第 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=連結串列長度時。
在這裡插入圖片描述