• leetcode148. Sort List


    leetcode148. Sort List

    题意:

    使用恒定空间复杂度在O(nlogn)时间内对链表进行排序。

    思路:

    merge排序,不断二分,然后归并,返回新的链表,归并链表。

    • 用slow和fast指针找到mid点,并且要注意的是结束的时候slow指针已经是mid + 1的点了,如果还让right区间划分为[slow + 1,]就会死循环,假设只有两个元素容易验证。
    • 给链表排序,有点骚气。

    ac代码:

    C++

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* getMid(ListNode* head)
        {
            if(!head) return NULL;        
            ListNode* slow = head;
            ListNode* fast = head;
            ListNode* mid = slow;
            while(fast&&fast->next)
            {
                mid = slow;
                slow = slow->next;
                fast = fast->next->next;
            }       
            mid->next = NULL;
            return slow;
        }
        
        ListNode* sortList(ListNode* head) 
        {
            if(!head) return NULL;
            if(!head->next) return head;
            ListNode* res = new ListNode(0);
            ListNode* pos = res;
            ListNode* mid = getMid(head);
            ListNode* left = sortList(head);
            ListNode* right = sortList(mid);
            while(left&&right)
            {
                if(left->val < right->val)
                {
                    pos->next = new ListNode(left->val);
                    left = left->next;
                }
                else
                {
                    pos->next = new ListNode(right->val);
                    right = right->next;
                }
                pos = pos->next;
            }
            pos->next = !left?right:left;
            return res->next;
        }
    };
    

    python

    
    
  • 相关阅读:
    我的第一个Python爬虫——谈心得
    python写第一个网页
    科学计算和可视化
    类和正则表达(自动更正,和代数运算)
    图片处理
    jieba
    汉诺塔问题
    Python核心编程(第二版)第十章习题答案
    python官方文档之open()函数的翻译
    python打开文件时提示“File was loaded in the wrong encoding:’UTF-8”根因调查
  • 原文地址:https://www.cnblogs.com/weedboy/p/7163622.html
Copyright © 2020-2023  润新知