LintCode 166 鍊錶倒數第n個節點

2021-08-03 19:18:17 字數 567 閱讀 9041

找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。 樣例

給出鍊錶3->2->1->5->null

和n = 2,返回倒數第二個節點的值1.

一種是先遍歷一遍單鏈表,計算鍊錶的長度,然後再次遍歷,直到到達節點數減去n的節點,返回結果。

實際情況中若鍊錶數目很多而n相對不大,這種方法需要大約兩次遍歷。

更簡單的是採用雙指標。快指標比慢指標提前n個單元。當快指標到達單鏈表尾部時,慢指標指向待刪除節點的前節點。

雙指標方法可以解決很多問題,比如上乙個求單鏈表是否有環,也是使用兩個指標,乙個進一步,乙個進兩步,如果有環兩指標就會相遇。

/**

* definition of listnode

* class listnode

* }*/class solution

listnode *p=head;

listnode *pre=head;

while(--n)else

}while(p->next)

return pre;

}};

Lintcode 166 鍊錶倒數第n個節點

最開始的想法是先計算出鍊錶的長度length,然後再從頭走 length n 步即是需要的位置了。ac definition for listnode.public class listnode public class solution for int i length n i 0 i retur...

166 鍊錶倒數第n個結點

原題 您在真實的面試中是否遇到過這個題?是 標籤鍊錶 cracking the coding interview 思路 首先應該清楚,若鍊錶一共有t個結點,則正數第n個結點即倒數第t 1 n個結點。反過來也一樣,倒數第n個結點是正數第t 1 n個結點。明白這點後可以使用兩根指標cur pre來操作。...

Lintcode 鍊錶倒數第n個節點

找到單鏈表倒數第n個節點,保證鍊錶中節點的最少數量為n。給出鍊錶 3 2 1 5 null和n 2,返回倒數第二個節點的值1.思路 計算單鏈表長度length,然後遍歷單鏈表找出第 length n 1 個結點 耗時 54ms listnode nthtolast listnode head,int...