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
    发布时间:
    原始链接:
  • 相关阅读:
    yii2 分页
    yii2 钩子函数
    linux 配置compoer
    Python随心记--迭代器协议和for循环机制
    Python随心记--文件操作处理 open()
    Python随心记--练习
    Python随心记--函数式编程及常用内置函数,及部分实例
    Python随心记--匿名函数
    Python随心记--函数作用域
    Python随心记--局部变量与全局变量
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/leetCodeReorderList.html
Copyright © 2011-2022 走看看