輸入乙個鍊錶,輸出該鍊錶中倒數第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 ...