首页 > 其他分享 >148. Sort List(重要)

148. Sort List(重要)

时间:2022-12-01 20:04:57浏览次数:35  
标签:Sort head ListNode head2 head1 List 148 next NULL


Sort a linked list in O(n log n) time using constant space complexity.

用归并排序!

相似的题目147. Insertion Sort Li


/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* sortList(ListNode* head) {
if (head == NULL || head->next == NULL) return head;
else{
ListNode* faster = head, *slower = head;
while (faster->next != NULL&&faster->next->next != NULL){
faster = faster->next->next;
slower = slower->next;
}
ListNode* head2 = slower->next;
slower->next = NULL;
head = sortList(head);
head2 = sortList(head2);
return merge(head, head2);
}
}

private:
ListNode* merge(ListNode* head1, ListNode* head2){
ListNode dummy(0);
ListNode* head = &dummy;
while (head1&&head2){
if (head1->val < head2->val){
head->next = head1;
head1 = head1->next;
head = head->next;
}
else{
head->next = head2;
head2 = head2->next;
head = head->next;
}
}
if (head1){
head->next = head1;
}
if (head2){
head->next = head2;
}
return dummy.next;
}
};



标签:Sort,head,ListNode,head2,head1,List,148,next,NULL
From: https://blog.51cto.com/u_15899184/5904049

相关文章

  • List集合转换成数组
    我现在有个需求:将File集合转换成MultipartFile数组结构然后我就开始在网上开启了List转换到数组之旅。首先来看一个例子ArrayList<String>list=newArrayList<......
  • sort three number
    #include<iostream>#include<set>#include<algorithm>usingnamespacestd;voidsort_three0(int&a,int&b,int&c){vector<int>v{a,b,c};sort(begin(v),......
  • iOS学习之 plist文件的读写
    在做iOS开发时,经常用到到plist文件, 那plist文件是什么呢?它全名是:PropertyList,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此......
  • list定义与方法使用
    #一、list列表#语法:[元素,元素,...]#1.定义一个listmy_list=['杰伦','学友','德华']print(my_list)print(type(my_list))#2.定义一个嵌套listmy_list=[[1,2,3],[4......
  • delphi 让TActionList中的sender指向事发对象
    故事这样的:我有一批按钮需要共同一个点击事件,本来是按最普通的方法,批选了这些按钮,然后双击click事件,然后写代码,最主要的是这句:iTag:=TControl(Sender).Tag;......
  • list、dict和set的综合应用:排课系统(4)
    上回说到,我们成功的实现了排课算法并且生成了课表,这次我们就尝试在首页显示课表,并且实现调用排课的认证。显示课表显示课表非常的简单,在视图中返回的context字典中只有一......
  • list 和 dict 的复制
    我们都知道,Python中有两种可变的数据类型:list和dict。这两种数据类型对应的实例也有很多方法可以对自身进行修改,需要注意的是,这里调用修改相关的方法的时候不是返回修改......
  • list、dict和set的综合应用:排课系统(2)
    差一点我们就擦肩而过了有趣有用有态度上回说到,我们主要实现了排课系统的后台数据的定义以及每个数据对象之间的关系,这一次我们就来批量增加一些数据,为了给后面的排课算法进......
  • list、dict和set的综合应用:排课系统(1)
    差一点我们就擦肩而过了有趣有用有态度我们都知道一个程序从本质上来说就是算法+数据结构,这次就以我的本科毕业设计——排课系统为例,专门讲解如何设计排课的算法和要用到的......
  • MFC--List列表控件
           ......