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
    发布时间:
    原始链接:
  • 相关阅读:
    高精度计算
    c++ sort
    算法分类小结
    二叉树层序遍历
    clion windows c++环境配置 mingw
    kafka,filebeat 配置
    centos7 源码安装mysql5.7
    如何优雅的生成及遍历python嵌套字典
    Java Swing 绝对布局管理方法,null布局【图】
    python3.4+pymssql 中文乱码问题解决
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/leetCodeReorderList.html
Copyright © 2011-2022 走看看