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

输入一个链表,输出该链表中倒数第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居然还会给大于链表长度的值。。我们还要判断一下输出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载请注明出处:http://www.jianshu.com/p/c65d9d753c31 在上一篇博客《数据结构...
    Alent阅读 3,632评论 4 74
  • 大学的时候不好好学习,老师在讲台上讲课,自己在以为老师看不到的座位看小说,现在用到了老师讲的知识,只能自己看书查资...
    和珏猫阅读 1,571评论 1 3
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,647评论 0 13
  • 1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...
    BookThief阅读 2,030评论 0 2
  • 20岁的时候最大的梦想是瘦下来。为了瘦,什么断食法,什么7天瘦10斤的帖子,藏了一堆。最后都以失败告终,无一例外。...
    四季临海阅读 212评论 1 4

友情链接更多精彩内容