LeetCode148 Sort List 排序链表

编程入门 行业动态 更新时间:2024-10-22 08:29:42

LeetCode148 Sort List 排序<a href=https://www.elefans.com/category/jswz/34/1769662.html style=链表"/>

LeetCode148 Sort List 排序链表

1. problem description

Sort a linked list in O(n log n) time using constant space complexity(在 O(n log n) 时间复杂度和常数级空间复杂度下).

eg1:
Input: 4->2->1->3
Output: 1->2->3->4

eg2:
Input: -1->5->3->4->0
Output: -1->0->3->4->5

2. solution

class Solution {ListNode *getMid( ListNode *node ) {ListNode *fast = node, *slow = node;while( fast && fast->next ) {slow = slow->next;fast = fast->next->next;}// set next of node before mid to NULLfast = node;while( fast->next != slow ) fast = fast->next;fast->next = NULL;return slow;}ListNode *merge( ListNode *l1, ListNode *l2 ) {ListNode *head=NULL, *curr=NULL;while( l1 && l2 ) {if( l1->val < l2->val ) {if( !curr ) {curr = l1;head = curr;} else {curr->next = l1;curr = curr->next;}l1 = l1->next;} else {if( !curr ) {curr = l2;head = curr;} else {curr->next = l2;curr = curr->next;}l2 = l2->next;}}if( l1 ) {if( !curr ) {curr = l1;head = curr;} else {curr->next = l1;}}if( l2 ) {if( !curr ) {curr = l2;head = curr;} else {curr->next = l2;}}return head;}public:ListNode* sortList( ListNode* head ) {if( !head || !head->next ) return head;ListNode *mid = getMid( head );ListNode *left = sortList( head );ListNode *right = sortList( mid );return merge( left, right );}
};

更多推荐

LeetCode148 Sort List 排序链表

本文发布于:2024-02-17 03:56:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1692551.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:链表   Sort   List

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!