刪除鍊錶倒數第N個節點

2021-10-05 20:19:39 字數 926 閱讀 5920

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一起走,直...