输出一个链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个结点。
这里给出了两种方法:

方法一
废话不多说,先看思维逻辑图:
当你能把下面这幅思维逻辑图能够很好的理解时,那么下面的代码也就很好理解了。
在这里插入图片描述

程序如下:

public ListNode findKthToTail1(int k){
        if(k <=0 ||k > getLength()) {
            return null;
            //判断k是否合理
        }
        ListNode fast = this.head;
        ListNode slow = this.head;
        while(k-1>0) {
                fast = fast.next;
                k--;
        }
        while(fast.next != null) {
            fast = fast.next;
            slow = slow.next;
        }

        return slow;
    }

方法二

其实这个方法与方法一大同小异,较上一段代码优化了一下,我们简单来看一下即可。

直接上代码:

public ListNode findKthToTail2(int k){
        if(k <=0||head == null ) {
            return null;
        }
        ListNode fast = this.head;
        ListNode slow = this.head;
        while(k-1>0) {
            if(fast.next != null){
                fast = fast.next;
                k--;
            }else {
                System.out.println("没有这个节点");
                return null;
            }
        }
        while(fast.next != null) {
            fast = fast.next;
            slow = slow.next;
        }

        return slow;
    }
发布了43 篇原创文章 · 获赞 41 · 访问量 1792

猜你喜欢

转载自blog.csdn.net/weixin_45662626/article/details/103074669