劍指offer之面試題15 鍊錶中倒數第k個結點

2021-07-11 09:18:35 字數 776 閱讀 2567

題目描述

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

思路:舉個例子,。倒數第3個為4,即正數第6-(3-1)個,i從1開始。據此我們可以得出乙個方法:先遍歷一邊求出鍊錶結點總個數n,然後從i=1開始找到第n-(k-1)個結點即可

/*

public class listnode

}*/public

class solution

phead=head;

for(int i=1;i1)&&k<=nodesnum;i++)

if(k>nodesnum)

return phead;

}}

這樣會遍歷兩次鍊錶,能不能只遍歷一次?

可以,定義兩個指標,第乙個指標phead從頭走k-1步,然後第二個指標從頭開始和第乙個指標同時走,當第乙個指標走到鍊錶尾部時,第二個指標恰好走到倒數第k個結點。

/*

public class listnode

}*/public

class solution

else

}pbehind=head;

while(phead.next!=null)

return pbehind;

}}

note:

以下三種情況需另外給予考慮:

case1:頭指標為null

case2:k<=0

case3:k大於鍊錶節點個數

劍指offer之面試題16 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。思路 借助圖形來分析一下反轉鍊錶需要改變哪些指標。假設某一時刻,經過若干操作,我們已經把h點之前的指標調整完畢,現在反轉i指標指向的結點。由圖可知,為了防止指標的斷開,需要儲存i的next指標,為了完成反轉,需要知道i的前乙個指標prev,當然...

劍指offer面試題15

面試題15 鍊錶中倒數第k個結點 題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾結點是倒數第乙個結點。例如乙個鍊錶有6個結點,從頭結點開始它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個結點是值為4的結點。預備知識 鍊錶結點的定義如下 ...

劍指Offer之面試題26 複雜鍊錶的複製

所有 均通過g 編譯器 測試,僅為練手紀錄。面試題 26 複雜鍊錶的複製 題目 請實現函式 complexlistnode clone complexlistnode phead 複製乙個複雜鍊錶。在複雜鍊錶中,每個結點除了有乙個 m pnext 指標指向下乙個結點外,還有乙個 m psibling...