思路

  • 快慢指针,快指针先走k步,然后同步走,快指针走到最后,即两个指针中间隔了k个开始走
  • 遍历链表算出长度

代码

快慢

public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        ListNode t=head,res=head;//t为快指针,res为慢指针
        while(k>0 &&t!=null){
            k--;
            t=t.next;
        }
        if(k>0){return null;}
        while(t!=null){
            t=t.next;
            res=res.next;
        }
        return res;
    }
}