Total Accepted: 62373
Total Submissions: 220367
Difficulty: Medium
Sort a linked list using insertion sort.
Hide Similar Problems
思路:
1.将链表分成两个部分(已排序和未排序);
2.搜索排序部分插入点;
3.插入
code:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* insertionSortList(ListNode* head) {
ListNode *dummy = new ListNode(-1);
ListNode *cur = head;
ListNode *tmp = dummy;
while(cur) {
ListNode *next = cur->next;
while(tmp->next && tmp->next->val < cur->val) tmp = tmp->next;
cur->next = tmp->next;
tmp->next = cur;
tmp = dummy;
cur = next;
}
return dummy->next;
}
};