• 143. Reorder List


    Given a singly linked list LL0→L1→…→Ln-1→Ln,
    reorder it to: L0→LnL1→Ln-1→L2→Ln-2→…

    You may not modify the values in the list's nodes, only nodes itself may be changed.

    Example 1:

    Given 1->2->3->4, reorder it to 1->4->2->3.

    Example 2:

    Given 1->2->3->4->5, reorder it to 1->5->2->4->3.
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public void reorderList(ListNode head) {
            if (head == null || head.next == null) return;
            ListNode slow = head, fast = head, prev = null;
            while (fast != null && fast.next != null) {
                prev = slow;
                slow = slow.next;
                fast = fast.next.next;
            }
            prev.next = null; // cut at middle
            slow = reverse(slow);
            // merge two lists
            ListNode curr = head;
            while (curr.next != null) {
                ListNode tmp = curr.next;
                curr.next = slow;
                slow = slow.next;
                curr.next.next = tmp;
                curr = tmp;
            }
            curr.next = slow;
        }
        public ListNode reverse(ListNode head){
            ListNode prev = null;
            ListNode cur = head;
            while(cur != null){
                ListNode next = cur.next;
                cur.next = prev;
                prev = cur;
                cur = next;
            }
            return prev;
        }
    }

    可以找到中间节点,断开,把后半截单链表reverse一下,再合并两个单链表。

  • 相关阅读:
    mongoDB 小练习
    pymongo 操作
    mongoDB 大文件存储方案, JS 支持展示
    mongoDB 固定集合
    mongoDB 聚合操作
    mongoDB 索引
    mongoDB 其他数据类型
    mongoDB 文档操作_删
    mongoDB 文档操作_改
    【探讨】linux环境,执行重启了php后php.ini依然不生效
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/11392183.html
Copyright © 2020-2023  润新知