/**
* 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) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if (!head) return NULL;
ListNode *res = new ListNode(-2147483648);
res->next = head;
ListNode *pre = res->next, *cur = pre->next;
while (cur) {
if (cur->val < pre->val) {
ListNode *iterPre = res, *iter = res->next;
while (!(cur->val >= iterPre->val && cur->val < iter->val)) {
iterPre = iter;
iter = iter->next;
if (iter == pre) {
break;
}
}
pre->next = cur->next;
cur->next = iter;
iterPre->next = cur;
cur = pre->next;
}else {
pre = cur;
cur = cur->next;
}
}
return res->next;
}
};
Insertion Sort List
最新推荐文章于 2022-04-09 13:42:00 发布