鍊錶中倒數第k個節點

2021-10-23 17:17:59 字數 875 閱讀 7979

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

採用雙指標法,首先,快指標先走k步,慢指標先走一步;然後,快慢指標同時移動,當快指標走到鍊錶末尾節點的時候,慢指標就剛好走到倒數第k個節點。

這道題不合格的邊界條件有:head == null、k <= 0,此外不合法的情況還有鍊錶的長度小於k。

/*

public class listnode

}*/public class solution

//1、快指標先走k步,慢指標先走1步

listnode slow = head, fast = head;

while (fast != null && k > 1)

//排除單鏈表長度小於k的情況

if (fast == null)

//2、快慢指標一起走,當快指標到達最後乙個節點時,慢指標就是倒數第k個節點

while (fast.next != null)

return slow;

}public listnode findkthtotail2(listnode head, int k)

return p2;

}public listnode findkthtotail(listnode head,int k)

if (size < k || k == 0)

//int diff = size - k;

listnode pre = head, post = head;

int count = 0;

while (count < k-1)

while (post.next != null)

return pre;

}}

鍊錶中倒數第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 ...