zoukankan      html  css  js  c++  java
  • leetcode-Sort List

    题目链接:

    https://leetcode.com/problems/reorder-list/

    分析:

    注意这里寻找中间节点的时候需要增加一个哑巴节点,否则1->2这种就会出错,具体代码如下:

    class Solution {
    public:
        ListNode* sortList(ListNode* head) {
            if(head == NULL || head->next == NULL)
            {
                return head;
            }
            ListNode dummy(-1);
            dummy.next = head;
            ListNode *slow = &dummy;
            ListNode *fast = &dummy;
            while(fast != NULL && fast->next != NULL)
            {
                slow = slow->next;
                fast = fast->next->next;
            }
    
            ListNode *p1 = head;
            ListNode *p2 = slow->next;
            slow->next = NULL;
            ListNode *pp1 = sortList(p1);
            ListNode *pp2 = sortList(p2);
            return mergeList(pp1, pp2);
        }
    private:
        ListNode *mergeList(ListNode *p1, ListNode *p2)
        {
            if(p1 == NULL && p2 == NULL)
            {
                return NULL;
            }
            else if(p1 == NULL)
            {
                return p2;
            }
            else if(p2 == NULL)
            {
                return p1;
            }
            else
            {
                ListNode dummy(-1);
                ListNode *cur = &dummy;
                while(p1 != NULL && p2 != NULL)
                {
                    if(p1->val < p2->val)
                    {
                        cur->next = p1;
                        p1 = p1->next;
                    }
                    else
                    {
                        cur->next = p2;
                        p2 = p2->next;
                    }
                    cur = cur->next;
                }
                if(p1 != NULL)
                {
                    cur->next = p1;
                }
                if(p2 != NULL)
                {
                    cur->next = p2;
                }
                return dummy.next;
            }
        }
    };
  • 相关阅读:
    虚拟机中安装CentOS7
    tensorflowwindows安装
    CentOS7离线安装Ambari与HDP
    (二)apache atlas配置和运行
    kafka资料收集
    kafka源代码环境配置
    文件传输遇到的坑
    故障保护设置
    多轴APM调参
    程序员考试操作步骤
  • 原文地址:https://www.cnblogs.com/shirley-ict/p/5523041.html
Copyright © 2011-2022 走看看