一,链表中倒数第k个节点
题目描述
输入一个链表,输出该链表中倒数第k个节点。
我的代码
/**
* 为了实现只遍历链表一次就能找到倒数第k个节点,我们定义两个指针。
* 第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动。
* 从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针
* 的距离保持在k-1,当第一个指针到达链表的尾节点时,第二个指针刚好走到
* 倒数第k个节点。
*/
ListNode *findKthToTail(ListNode *head, int k){
ListNode *fast = head;
ListNode *slow = NULL;
if(head == NULL || k <= 0){
return NULL;
}
for(int i = 0; i < k - 1; i ++){
fast = fast->next;
}
slow = head;
while(fast->next != NULL){
slow = slow->next;
fast = fast->next;
}
return slow;
}
本文介绍了一种仅遍历链表一次即可找到倒数第K个节点的方法。通过定义两个指针,第一个指针先向前移动K-1步,随后两个指针同步移动直至首个指针到达尾部,此时第二个指针即指向目标节点。
545

被折叠的 条评论
为什么被折叠?



