zoukankan      html  css  js  c++  java
  • Leetcode 148 排序链表

    题目描述:

      在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。

    题解:

      O(n log n) 时间复杂度、O(1)的空间复杂度,自然想到的是归并排序。值得一提的是在找区间中点的时候,可以用快慢指针的方法一次遍历得到。

    slow指针一次走一步,faster指针一次走两步。假设链表长度为N,当faster走向链表结尾的时候,需要N/2次,这个时候slow正好指向链表的中点。

    AC代码:

      

    class Solution {
    public:
        ListNode* sortList(ListNode* head) {
            ListNode* tmp = head;
            if(head == NULL || head->next == NULL) return head;
    
            // cut
            ListNode* slow = head;
            ListNode* faster = head;
            while(faster!=NULL)
            {
                faster =faster->next;
                if(faster == NULL) break;
                faster = faster->next;
                if(faster == NULL) break;
                slow = slow->next;
            }
            ListNode* r = slow->next;
            slow->next = NULL;
            ListNode* l = head;
            r = sortList(r);
            l = sortList(l);
            
            // merge
            ListNode* ans = new ListNode(-1);
            ListNode* pre = ans;
            while(r!=NULL && l!=NULL)
            {
                int val;
                if(r->val <= l->val) 
                {
                    val = r->val;
                    r = r->next;
                }
                else 
                {
                    val = l->val;
                    l = l->next;
                }
                tmp = new ListNode(val);
                tmp->next = pre->next;
                pre->next = tmp;
                pre = tmp;
            }
            if(r!=NULL) pre->next = r;
            if(l!=NULL) pre->next = l;
            return ans->next;
            
        }
    };
  • 相关阅读:
    迅为RK3399开发板嵌入式linux开发指南
    迅为iMX8M Mini开发板NXP i.MX8系列ARM cortex A53 M4核心板
    谱聚类(上篇)
    html 新增标签
    前段文件上传
    vue设置cookie和获取cookie
    vue 中使用element ui 回显问题
    vue实现表格自建与表格内容填写
    Delphi Datasnap Post请求
    Nginx SSL 配置https
  • 原文地址:https://www.cnblogs.com/z1141000271/p/12564135.html
Copyright © 2011-2022 走看看