牛客網:連結串列中倒數第k個結點
阿新 • • 發佈:2021-02-10
技術標籤:牛客網
題目描述
連結串列中倒數第k個結點
輸入一個連結串列,輸出該連結串列中倒數第k個結點。
示例1:
輸入:1,{1,2,3,4,5}
輸出:{5}
題解
本題依舊採用快(fast)慢(slow)指標即可,題目要求求出連結串列中倒數第k個結點,那麼先讓fast指標先走k步,然後在讓slow指標開始走,兩個指標同時走,每次走一步,直至fast 等於NULL時結束。
初始情況:
①讓fast先走k步,(本例中k為1)
②再讓slow指標開始走,兩個指標每次向後走一個
③重複②的過程,直至fast == NULL結束
題解程式碼
struct ListNode* FindKthToTail(struct ListNode* pListHead,int k) {
// write code here
struct ListNode* slow= pListHead,*fast= pListHead;
while(k--){
if(fast == NULL){
return NULL;
}else{
fast = fast->next;
}
}
while(fast != NULL){
slow = slow-> next;
fast = fast->next;
}
return slow;
}