创建一个反向链表,再正着next k次即可。
需要注意的是,但是要把前面的节点按顺序接到所要节点的后边不然回和输出不对应。
public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head == null || k ==0 ){ return null; } //新的反向链表 ListNode ln = new ListNode(head.val); int count = 0; //检查不存在的情况 while(head.next != null){ count ++; head = head.next; ListNode lt = new ListNode(head.val); lt.next = ln; ln = lt; } if(count<k-1){ return null; } //回来遍历k-1次即可,但是要把前面的节点按顺序接到所要节点的后边 //不然回和输出不对应 哭死了 作为一个刷题新手搞了半天 ListNode lr = new ListNode(ln.val); for(int i = 0;i<k-1;i++){ ln = ln.next; ListNode ltmp = new ListNode(ln.val); ltmp.next = lr; lr = ltmp; } // ln.next= null; return lr; } }