• 返回链表的中间元素


    这是剑指offer15题的扩展

    下面是自己实现的一个类似于LinkedList类,其中findMid方法是获取链表的中间节点的实现方法(在未知列表长度的情况下),大致思路如下:

    1、首先在方法中定义slow 、 fast两个局部变量。

    2、slow每次循环next一次,fast每次循环next两次,当fast.next==null时表示fast已经执行到达了链表的末尾,而slow刚好执行到链表的一半。

    加上这个可以返回偶数个数的第一个,不加返回第二个

            
                if(fast==null){
                    break;
                }
    package StackMin.Offer15_FindKthToTail;
    
    public class MidLink {
        public static void main(String[] args) {
            ListNode head = new ListNode(1);
            ListNode L2 = new ListNode(2);
            ListNode L3 = new ListNode(3);
            ListNode L4 = new ListNode(4);
            ListNode L5 = new ListNode(5);
            ListNode L6 = new ListNode(6);
            head.next = L2;
            L2.next = L3;
            L3.next = L4;
            L4.next = L5;
            L5.next = L6;
    
            findMid(head);
        }
    
        private static void findMid(ListNode head) {
            ListNode slow = head;
            ListNode fast = head;
    
    //        while (fast!=null){
    //            if(fast.next!=null){
    //                fast=fast.next.next;
    //            }else {
    //                break;
    //            }
    //            slow=slow.next;
    //        }

    上下两个写法都行 while (fast != null && fast.next != null) { fast = fast.next.next; // 加上注释返回3,不加返回4 // if(fast==null){ // break; // } slow = slow.next; } System.out.println(slow.val); } }

      参考 :[面试]返回链表的中间元素

  • 相关阅读:
    软件工程-案例分析作业 开源代码托管平台
    软件工程-个人阅读作业 #2
    软件工程-个人阅读作业 #1
    提问回顾与个人总结
    软工案例分析作业
    结对编程——第二阶段
    软工个人阅读作业#2
    软工个人阅读作业#1
    OO补给站总结
    BUAA_2021_SE_Final_Report
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/9870162.html
Copyright © 2020-2023  润新知