美文网首页
14 链表输出倒数第k个节点

14 链表输出倒数第k个节点

作者: ShawnCaffeine | 来源:发表于2019-06-01 20:53 被阅读0次

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

额 1.想法很简单 首先想到遍历一个把数放到一个栈里面,然后输出第k个。然后就是首先遍历一遍数组,找到链表长度,然后我再从头开始依次遍历(长度-k次)。
2.看评论的想法说,两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指针走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了 // 其实差不多 就是一个指针走k-1步,到达k节点,假设链表长度为n,那么它再走n-k步就可以到达链表末尾。那另一个指针跟着一起走n-k步,那么它到达的节点就是倒数第k的节点了。少做一次遍历。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        int count=1;
        if(head==null){
            return null;
        }
        ListNode first = head;
        while(head.next!=null){
            count++;
            head=head.next;
        }
        if(k<=count){
             for(int i=0;i<count-k;i++){
             first=first.next;
        }
         return first; 
        }else{
            return null;
        }
         
    }
}

额外要注意一下,测试用例中k居然还会给大于链表长度的值。。我们还要判断一下输出。

相关文章

网友评论

      本文标题:14 链表输出倒数第k个节点

      本文链接:https://www.haomeiwen.com/subject/bjfztctx.html