題目描述
輸入一個連結清單,輸出該連結清單中倒數第k個結點。
如果該連結清單長度小于k,請傳回空。
輸入:{1,2,3,4,5},1
輸出:{5}
快慢指針:快指針先走k步後慢指針開始走,快指針next為空時,慢指針所指的節點就是倒數第k個節點
public ListNode FindKthToTail(ListNode pHead, int k) {
if (pHead == null || k < 0) return pHead;
int count = 1;
ListNode p = pHead;
while (p.next != null) {
count++;
p = p.next;
}
if (k > count) return null;
ListNode fast = pHead;
ListNode slow = pHead;
for (int i = 0; i < k; i++) {
fast = fast.next;
}
//快慢指針一起走,快指針指向null時,慢指針剛好指向倒數第K個節點
while (fast != null) {
fast = fast.next;
slow = slow.next;
}
return slow;
}