# 148.Sort list

**<font color=red>难度Medium</font>**

## 刷题内容
> 原题连接

* https://leetcode.com/problems/sort-list/

> 内容描述

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

Example 1:

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

Input: -1->5->3->4->0
Output: -1->0->3->4->5
```
> 思路
******- 时间复杂度: O(nlgn)******- 空间复杂度: O(n)******

这个思路头偷了个懒，用来c++中的 sort() 算法。现将链表中的 val 依次储存在数组中，并对数组进行排序。接着再把数组中的数存回链表中即可。

```cpp
/**
 * 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) {
        vector<int> v;
        ListNode* current = head;
        while(current)
        {
            v.push_back(current ->val);
            current = current ->next;
        }
        sort(v.begin(),v.end());
        current = head;
        int i = 0;
        while(current)
        {
            current ->val = v[i++];
            current = current ->next;
        }
        return head;
    }
};
```