zoukankan      html  css  js  c++  java
  • [LeetCode] Reorder List

    Given a singly linked list LL0→L1→…→Ln-1→Ln,
    reorder it to: L0→LnL1→Ln-1→L2→Ln-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}.

    思路:找到中间节点,将链表的后半部分就地逆置。然后插入到前半部分。

       时间复杂度O(n),空间复杂度O(1) 1 /**

     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     void reorderList(ListNode *head) {
    12         if (head == NULL || head->next == NULL || head->next->next == NULL) 
    13             return;
    14         
    15         int length = 0;
    16         for (ListNode *pter = head; pter != NULL; pter = pter->next) {
    17             ++length;
    18         }
    19         
    20         int half_length = 1;
    21         ListNode *half = head;
    22         while (half_length < (length / 2)) {
    23             ++half_length;
    24             half = half->next;
    25         }
    26         
    27        //reverse
    28        ListNode *pter = half->next;
    29        half->next = NULL;
    30        while (pter != NULL) {
    31            ListNode *next_node = pter->next;
    32            pter->next = half->next;
    33            half->next = pter;
    34            pter = next_node;
    35        }
    36       
    37 ListNode *pter2 = head; 38 pter = half->next; 39 while (pter2 != half) { 40 ListNode *next_node = pter->next; 41 half->next =next_node; 42 pter->next = pter2->next; 43 pter2->next = pter; 44 pter2 = pter2->next->next; 45 pter = next_node; 46 } 47 } 48 };
  • 相关阅读:
    JavaScript
    94.Binary Tree Inorder Traversal
    144.Binary Tree Preorder Traversal
    106.Construct Binary Tree from Inorder and Postorder Traversal
    105.Construct Binary Tree from Preorder and Inorder Traversal
    90.Subsets II
    78.Subsets
    83.Merge Sorted Array
    80.Remove Duplicates from Sorted Array II
    79.Word Search
  • 原文地址:https://www.cnblogs.com/vincently/p/4073442.html
Copyright © 2011-2022 走看看