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

相关推荐

06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
黑皮白袜臭脚体育生:看了这篇帖子之后已经第一百次质问老妈,仍然没有得到我的老妈是老板的回答
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务