获取链表倒数第k个节点
链表中倒数第k个结点
http://www.nowcoder.com/questionTerminal/529d3ae5a407492994ad2a246518148a
创建一个反向链表,再正着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;
}
}
查看10道真题和解析