题目:链表中倒数第k个结点
描述:输入一个链表,输出该链表中倒数第k个结点。
解决方案:思路: 根据规律得出倒数第k个节点是 n-k+1个节点

方法一:先计算出链表的长度,在循环走到n-k+1步。(相当于去掉链表最后k-1个元素,然后求此时链表最后一个元素)
方法二:两个指针指向头结点,第一个指针走k-1步,第二个指针不懂,然后两个指针同时往后移。第一个指针到了链表结尾的时候,第二个指针的位置是就是所求的位置;(做了一把K-1长度的尺子)


public class ListOne {
  public static void main(String[] args) {     ListNode node1 = new ListNode(1);
    ListNode node2 = new ListNode(2);
    ListNode node3 = new ListNode(3);
    ListNode node4 = new ListNode(4);
    ListNode node5 = new ListNode(5);
    ListNode node6 = new ListNode(6);
    ListNode node7 = new ListNode(7);
    node1.next = node2;
    node2.next = node3;
    node3.next = node4;
    node4.next = node5;
    node5.next = node6;
    node6.next = node7;
    System.out.println(find(node1,3));
  }
  //方法一:
  public static int find(ListNode node ,int k) {
    ListNode resultNode = node;
    int result = 0;
    int count = 0;
    while(node!=null) {
      count++;
      node = node.next;
    }
    if(k ==0 || k > count) return -1;
    for(int i=0;i<= count-k;i++) {
      result = resultNode.val;
      resultNode = resultNode.next;
    }
    return result;   }
  //方法二
  public ListNode static find(ListNode node ,int k){
    if(node == null || k<0 ) return null;
    ListNode one=node ,two = node;
     for(int i = 1;i<k ;i++){  //第一个指针先走k-1步
      if(one.next != null;){
        one = one.next;
      }else {
        return null;
      }
    }
    while(one.next!= null){
      one = one.next;
      two = two.next;
    }
      return  two;
  }
}
class ListNode{
  int val;
  ListNode next;
  ListNode(int val){
    this.val = val;
  }
}

最新文章

  1. ASP.NET Aries 入门开发教程4:查询区的下拉配置
  2. C# 将PDF文件转换为word格式
  3. C# Socket连接 无法访问已释放的对象
  4. mediawiki安装
  5. 在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理
  6. nodejs模块——fs模块
  7. CMD代码页
  8. (转)@SuppressWarnings的使用、作用、用法
  9. 2016MBA排名
  10. JS事件冒泡与捕获
  11. CATALOGUE 目录
  12. C# 释放非托管资源
  13. 292. Nim Game(C++)
  14. 面试中的Singleton
  15. C语言编译过程及数据类型
  16. Linux打包命令 - tar
  17. Trie树(字典树)的介绍及Java实现
  18. Java设计模式之单例模式,笔记完整到不敢想象
  19. python全局解释器锁(GIL)
  20. README.md文件编辑

热门文章

  1. codeforces 869 E. The Untended Antiquity(树状数组)
  2. CF982C Cut &#39;em all! DFS 树 * 二十一
  3. hdu 4513(Manacher)
  4. C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息
  5. csapp:第八章 异常控制流ECF
  6. 关闭Linux(Ubuntu)错误报告
  7. 数论 Day 12
  8. MySQL二进制日志分析-概述篇
  9. Mysql高手系列 - 第11篇:深入了解连接查询及原理
  10. Nginx限流