获取链表倒数第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;
    }
}
全部评论

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务