前言
依旧力扣,这道题之前有做过类似的题,今天给一个新的思路去做,应对面试时候遇到的奇奇怪怪的问题
面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode)https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/description/
这道题如果只遍历一次数组,我们该怎么做 呢
一,思路
我们依旧创建快慢指针,只不过这次不是谁比谁走的快,而是快指针比慢指针提前走了 k 步
二,代码实现
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
int kthToLast(struct ListNode* head, int k){
struct ListNode *fast = head, *slow =head;
//快指针走k步
while(k--){
fast = fast->next;
}
//同时走
while(fast){
slow = slow->next;
fast = fast->next;
}
return slow->val;
}
要注意题干条件最终返回值 val ,如果直接返回 slow 会报错