147. Insertion Sort List
Posted copperface
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了147. Insertion Sort List相关的知识,希望对你有一定的参考价值。
- Total Accepted: 92484
- Total Submissions: 288998
- Difficulty: Medium
- Contributors: Admin
Sort a linked list using insertion sort.
分析
按照传统的插入方法,对list进行排序 56ms
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /** * 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 * curi = head, * curj = head; ListNode dummy(INT_MIN); dummy.next = NULL; while (curi != NULL){ curj = &dummy; ListNode * node = curi; curi = curi->next; while (curj != NULL){ if (curj->next == NULL || curj->val<= node->val && curj->next->val > node->val){ ListNode * tmp = curj->next; curj->next = node; node->next = tmp; break ; } curj = curj->next; } } return dummy.next; } }; |
将list的数值,赋值倒vector<int>中,然后排序结束,再依次赋值回去 19ms
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /** * 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) { if (head == NULL) return head; vector< int > list; ListNode * h = head; while (h != NULL){ list.push_back(h->val); h = h->next; } sort(list.begin(), list.end()); h = head; for (auto val: list){ h->val = val; h = h->next; } return head; } }; |
以上是关于147. Insertion Sort List的主要内容,如果未能解决你的问题,请参考以下文章
#Leetcode# 147. Insertion Sort List