双指针,相距k-1.

链表中倒数第k个结点

http://www.nowcoder.com/questionTerminal/529d3ae5a407492994ad2a246518148a

双指针,当相距k-1时,当后者到最后时,前者才恰好是倒数第k个元素。

最后一个元素的循环条件是cur.next!=null,而不是cur!=null.

链表访问(cur.next)全程要确保非空!

    /**
     * 输入一个链表,输出该链表中倒数第k个结点。
     * @param head 链表
     * @param k  倒数第k
     * @return 输出该链表中倒数第k个结点。
     */
    public ListNode FindKthToTail(ListNode head,int k) {
        if(head==null||k<=0){
            return null;
        }
        ListNode cur=head;
        for(int i=0;i<k-1;i++){
            if(cur.next==null){
                return null;
            }
            cur=cur.next;
        }
        ListNode res=head;
        while (cur!=null){
            cur=cur.next;
            res=res.next;
        }

        return res;
    }

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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