链表中倒数第K个结点

链表中倒数第K个结点

问题:输入一个链表,输出该链表中倒数第k个结点。

思路:设置两个指针i,j,先让j走k-1步,之后两个指针一起走。当j走到链表的最后一个的时候,i指向的为倒数第k个结点

代码实现:

public  static ListNode findKthToTail(ListNode head,int k){
        if(head ==null)
            return null;
        if(k <=0)
            return null;
        ListNode i =head,
                j = head;
        int index = 1;
        while ( index <k){
            if(j.next ==null)
                return null;
            j = j.next;
            index++;
        }
        while (j.next !=null){
            i = i.next;
            j = j.next;
        }
        return i;
    }

测试函数:

 public static void main(String[] args){
        ListNode A =new ListNode(3);
        ListNode B = new ListNode(12);
        ListNode C = new ListNode(1);
        ListNode D = new ListNode(10);
        ListNode F = new ListNode(7);
        A.next = B;
        B.next = C;
        C.next = D;
        D.next = F;
        System.out.println(findKthToTail(A,2).val);

    }
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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