題目描述
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
分析
快慢指標法解決,設定兩個指向頭節點的指標,讓其中乙個先走k步,然後兩個指標同時向後遍歷,直到快指標為空時迴圈終止,此時慢指標指向的就是倒數第k個節點。
例:1,2,3,4,5,6,7;設 k = 2;初始化 i = 1;j = 1; j向前至 2此時指向3,然後i,j同時向後,直至j指向null,此時i指向6,即倒數第二個位置。
本題需要判斷輸入的k是否合法,非法輸入即k的值大於鍊錶長度。
c++**如下
listnode* findkthtotail(listnode* plisthead, unsigned int k)
if(p1 ==
null
&& n>
0) return
null;
p1 = plisthead;
while(p1&&k>
0) while(p2&&p1)
return p2;
}
鍊錶中倒數第k個節點
題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。struct listnode方法 定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二...
鍊錶中倒數第k個節點
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。ac class solution def findkthtotail self,head,k write code here 將每個節點存在棧裡,選取stack中第k個值 stack while head head head.next if k len s...
鍊錶中倒數第k個節點
acwing打卡活動 劍指offer 打卡活動 周二第十題 鍊錶中倒數第k個節點 definition for singly linked list.public class listnode 思路 設列表總結點數為n,則n k 1 為該列表的倒數第k個節點 如 n 10,k 2,則 10 2 1 ...