首页 > 代码库 > 147. Insertion Sort List
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; } }; |
null
147. Insertion Sort List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。