解题:这个好像是某年考研题,大概思路就是先遍历链表用一个计数器++,当计数值=k时,再用一个指针遍历链表,两个遍历相差k位,当第一个链表遍历完了,第二个链表遍历到倒数第k个元素。
举例:一个人先跑距离为k,另一个人开始起跑,当第一个人到终点时第二个人距离终点距离为k
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode getKthFromEnd(ListNode head, int k) {
int cnt=-1;
ListNode head1=head,res=head;
while(head1!=null){
cnt++;
head1=head1.next;
if(cnt>=k){
res=res.next;
}
}
return res;
}
}