题目大意

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

思路

双指针,第一个p先走k部,然后q从head开始,pq同时走,直到p为空,q就是索要的节点

设p与结尾查x次,总长k+x次,p走了x次,也就是倒数k

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
int kthToLast(ListNode* head, int k) {
ListNode* c=head;
while(k){
head=head.next;
k--;
}
while(head){
c=c.next;
head=head.next;
}
return c.val;

}