美文网首页
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