zoukankan      html  css  js  c++  java
  • LeetCode-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.
    public void reorderList(ListNode head) {
            if(head==null){
                return ;
            }
            //找到中点
            ListNode fast = head;
            ListNode slow = head;
            while(slow !=null &&fast!= null && fast.next!=null){
                slow = slow.next;
                fast = fast.next.next;
            }
            ListNode mid = slow.next;
            slow.next = null;
            //反转链表
            ListNode newHead = null;//反转链表头结点
            ListNode cur = mid ;
            while(cur!=null){
                ListNode temp = cur.next;
                cur.next = newHead;
                newHead = cur;  
                cur = temp;
            }
            //reorder
            cur = head;
            while(cur!=null&& newHead !=null){
                ListNode temp = newHead.next;
                newHead.next = cur.next;
                cur.next = newHead;
                cur=cur.next.next;
                newHead=temp;
            }
        
        }
  • 相关阅读:
    类的组合
    类的继承和派生
    面向对象编程
    正则表达式
    sys模块 logging模块 序列化模块
    time 模块,random模块,os模块
    递归函数
    interface有没有继承Object
    UTF-8和GBK的区别
    九皇后
  • 原文地址:https://www.cnblogs.com/zhacai/p/11154166.html
Copyright © 2011-2022 走看看