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}.

    分析:先用快慢指针找到链表的中点,然后翻转链表后半部分,再和前半部分组合。需要注意的是把链表分成两半时,前半段的尾节点要置为NULL,翻转链表时也要把尾节点置为NULL。

     1 /**
     2  * Definition for singly-linked list.
     3  * class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) {
     7  *         val = x;
     8  *         next = null;
     9  *     }
    10  * }
    11  */
    12 public class Solution {
    13     public void reorderList(ListNode head) {
    14         // IMPORTANT: Please reset any member data you declared, as
    15         // the same Solution instance will be reused for each test case.
    16         if(head == null || head.next == null) return;
    17         ListNode fast = head, slow = head;
    18         while(fast != null && fast.next != null){
    19             fast = fast.next.next;
    20             slow = slow.next;
    21         }
    22         fast = slow.next;
    23         slow.next = null;
    24         fast = reverse(fast);
    25         while(head != null && fast != null){//merge
    26             ListNode tmp1 = head.next;
    27             ListNode tmp2 = fast.next;
    28             head.next = fast;
    29             fast.next = tmp1;
    30             head = tmp1;
    31             fast = tmp2;
    32         }
    33     }
    34     ListNode reverse(ListNode root){
    35         ListNode first = null, second = root;
    36         while(second != null){
    37             ListNode tmp = second.next;
    38             second.next = first;
    39             first = second;
    40             second = tmp;
    41         }
    42         return first;
    43     }
    44 }
  • 相关阅读:
    linux常见的编码转换
    linux sort的用法
    转--11个失败之后
    shell入门
    迟到
    必须要回答的问题
    【转载】个人开发者要掌握的时间规划建议
    Unity 碰撞检测 OnTriggerEnter 入门
    浅谈BUFF设计
    随机掉宝,对玩家来讲真的随机吗?
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3458711.html
Copyright © 2011-2022 走看看