1.問題
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。
示例:給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.
當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.
2.演算法
暴力破解法:先計算得出鍊錶的長度m,然後將鍊錶長度和所給倒數字置相減,即loc=m-n-1,得出刪除節點的前乙個節點,然後就可以刪除了。具體**如下:
/**
* 鍊錶節點的定義
* public class listnode
* }*/public
class
solution
//如果刪除位置和鍊錶長度一致,即可直接返回首節點的下乙個節點
if(listlong==n)
return head.next;
temp=head;
//重新回到首節點
for(
int i =
0; i < listlong-n-
1; i++
) pre=temp;
temp=temp.next;
pre.next=temp.next;
return head;
}}
class
solution
else}if
(i < n)
//剛好n使鍊錶的長度,則直接刪除頭節點即可
if(first.next == null)
else
second.next = second.next.next;
}return head;
}}
這樣的時間複雜度也是o(m),空間複雜度也是o(1),但是它只需要一次遍歷,因此對於長鍊表來說的話,這樣的提公升也是很大的。 刪除鍊錶倒數第n個節點
leetcode 題目 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.note n 鍊錶長度時,刪除頭節點 n 0時,不做任何操作。當第乙個指標first 比第二個指標領先n步,然後...
刪除鍊錶中倒數第n個節點
刪除鍊錶中倒數第n個節點 給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。樣例 給出鍊錶1 2 3 4 5 null 和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.definition for listnode.public class listnode pu...
刪除鍊錶中倒數第n個節點
給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。注意事項 鍊錶中的節點個數大於等於n 樣例 給出鍊錶1 2 3 4 5 null和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.定義兩個指標,slow fast fast先先前走n步後 slow和fast一起走,直...