zoukankan      html  css  js  c++  java
  • Reorder List

    Given a singly linked list LL0L1→…→Ln-1Ln,
    reorder it to: L0LnL1Ln-1L2Ln-2→…

    You must do this in-place without altering the nodes' values.

    For example,
    Given {1,2,3,4}, reorder it to {1,4,2,3}.

    思路:

    1. 找出中间节点

    2. 把中间节点之后的后半部分链表反序

    3. 把前半部分链表及后半部分链表合并

    4. 把中间节点 指向 null

    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public void reorderList(ListNode head) {
           int count = 0;
           ListNode midPoint = head;
           ListNode fastRunner = head;
    // while 结束时 fastRunner指向的是最后一个点 mid指向的是中点,如果总数是偶数,指向的是晓得值
    while(fastRunner != null && fastRunner.next != null){ fastRunner = fastRunner.next.next; midPoint = midPoint.next; count++; } if(count < 1 || midPoint.next == null) return; fastRunner = midPoint.next; ListNode runner = midPoint; while(fastRunner != null){ ListNode tmp = fastRunner.next; fastRunner.next = runner; runner = fastRunner; fastRunner = tmp; } ListNode frontRunner = head; ListNode backRunner = runner; while(frontRunner != midPoint && backRunner != midPoint){ ListNode tmp = backRunner.next; backRunner.next = frontRunner.next; frontRunner.next = backRunner; backRunner = tmp; frontRunner = frontRunner.next.next; } midPoint.next = null; } }
  • 相关阅读:
    基于雪花算法的单机版
    Spring cloud gateway自定义filter以及负载均衡
    logback转义符与MDC
    录音地址文件保存
    maven加载本地jar
    ES Log4J配置信息
    java线程池
    openstreetmap的数据下载
    php更新版本后(路径更改后)要做的调整
    重启IIS
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3555255.html
Copyright © 2011-2022 走看看