zoukankan      html  css  js  c++  java
  • 链表二:链表中倒数第k个结点


    题目:链表中倒数第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;
      }
    }

    天助自助者
  • 相关阅读:
    1722 最优乘车 1997年NOI全国竞赛
    tarjan算法详解
    codevs 原创抄袭题 5969 [AK]刻录光盘
    Kosaraju算法详解
    1722 最优乘车 未完成
    codevs原创抄袭题 5960 信使
    1405 奶牛的旅行
    android 管理Bitmap内存
    Dynamics CRM 2013 初体验(3):新增加的功能
    在android画面切换时设置跟随变动的小圆圈
  • 原文地址:https://www.cnblogs.com/ZeGod/p/9969323.html
Copyright © 2011-2022 走看看