zoukankan      html  css  js  c++  java
  • leetCodeReorderList链表合并

    原题

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

    分析

    将链表结点按照第一个 倒数第一个 第二个 倒数第二个 的顺序重新排序

    1 2 3 4重新排序后是 1 4 2 3

    AC代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        //翻转链表
        ListNode *reverse(ListNode *head){
            if(!head) return;
            ListNode * pre = NULL;
            while(head){
                ListNode * nex = head->next;
                head->next = pre;
                pre = head;
                head = nex;
            }
            return pre;
        }
        void reorderList(ListNode* head) {
            if(!head || !head->next) return head;
            ListNode * fast = head;
            ListNode * slow = head;
            while(fast->next && fast->next->next){
                fast = fast->next->next;
                slow = slow->next;
            }
            fast = slow->next;
            //截断
            slow->next = NULL;
            //翻转后半段
            ListNode * p = reverse(fast);
    
            //合并
            ListNode * res = head;
            ListNode * q = head->next;
            while(p && q){
                res->next = p;
                p = p->next;
                res = res->next;
    
                res->next = q;
                q = q->next;
                res = res->next;
            }
            if(p) res->next = p;
            if(q) res->next = q;
        }
    };
    
    转载请保留原文链接及作者
    本文标题:
    文章作者: LepeCoder
    发布时间:
    原始链接:
  • 相关阅读:
    行列式的六条运算法则整理
    李昊大佬的CV模板
    洛谷P2918 [USACO08NOV]买干草(一道完全背包模板题)
    .
    洛谷P2822 组合数问题
    欧拉筛法模板&&P3383 【模板】线性筛素数
    拓展欧几里得算法
    欧几里得算法求最大公约数模板
    P2678 跳石头
    【五一qbxt】test1
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/leetCodeReorderList.html
Copyright © 2011-2022 走看看