• 剑指Offer(Java版)第十八题:输入一个链表,输出该链表中倒数第k个结点。 为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。 例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。 这个链表的倒数第3个结点是值为4的结点。


    /*
    输入一个链表,输出该链表中倒数第k个结点。
    为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。
    例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。
    这个链表的倒数第3个结点是值为4的结点。
    */
    public class Class18 {
    //利用两个相聚为k-1的指针
    static class ListNode{
    int val;
    ListNode next = null;
    ListNode(int val){
    this.val = val;
    }
    }

    public ListNode FindThisPoint(ListNode head, int k){
    ListNode fast = head;
    ListNode slow = head;
    if(head == null || k <= 0){
    return null;
    }
    //fast先走k-1步
    while(k-- > 1){
    if(fast.next != null){
    fast = fast.next;
    }else{
    return null;
    }
    }
    //接着slow跟着fast走
    while(fast.next != null){
    fast = fast.next;
    slow = slow.next;
    }
    return slow;
    }

    public void test() {
    ListNode node1=new ListNode(1);
    ListNode node2=new ListNode(2);
    ListNode node3=new ListNode(3);
    ListNode node4=new ListNode(4);
    node1.next=node2;
    node2.next=node3;
    node3.next=node4;
    ListNode result = FindThisPoint(node1, 1);
    if(result.val==4)
    System.out.println("test4 passed!");
    else
    System.out.println("test4 failed!");
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Class18 c = new Class18();
    c.test();

    }

    }

  • 相关阅读:
    用css3实现一个带缺口的圆圈(图)
    markdown语法练习
    Android SDK + Appium 环境搭建
    Python + Robot Framework 环境搭建
    javascript动画效果之透明度
    javascript动画效果之匀速运动
    JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍(转载)
    javascript焦点图自动播放
    js中的随机数
    javascript焦点图(根据图片下方的小框自动播放)
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12451939.html
Copyright © 2020-2023  润新知