147. Insertion Sort List
来源:互联网 发布:地铁刷卡数据存闸机 编辑:程序博客网 时间:2024/06/05 16:36
Sort a linked list using insertion sort.
/** * 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) { vector<ListNode*> vec; if(head == NULL || head->next == NULL) return head; vec.push_back(head); ListNode* tmp = head->next; for( ; tmp != NULL; tmp = tmp->next){ int size = vec.size(); vec.push_back(tmp); for(int i = size - 1; i >= 0; i--){ if(vec[i]->val > vec[i + 1]->val){ if(i == 0) { ListNode* tnext = vec[1]->next; vec[1]->next = vec[0]; vec[0]->next = tnext; } else { ListNode* pre = vec[i - 1]; pre->next = vec[i + 1]; vec[i]->next = vec[i + 1]->next; vec[i + 1]->next = vec[i]; } swap(vec[i], vec[i + 1]); } } tmp = vec[size]; } return vec[0]; }};
参考discuss:https://discuss.leetcode.com/topic/8570/an-easy-and-clear-way-to-sort-o-1-space
/** * 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 || head->next == NULL) return head; ListNode* helper = new ListNode(0); ListNode* cur = head; ListNode* pre = helper; ListNode* next = NULL; while(cur != NULL){ next = cur->next; while(pre->next != NULL && pre->next->val < cur->val) pre = pre->next; cur->next = pre->next; pre->next = cur; pre = helper; cur = next; } return helper->next; }};
阅读全文
0 0
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- Python 上升到第二位,GitHub 2017 开发者年度报告
- 还不会用正则?看Linux 中 grep 命令的 12 个实践例子
- system verilog MATLAB学习笔记
- PHP——$_REQUEST
- 解析Kotlin内部类
- 147. Insertion Sort List
- 微信小程序开发教程、小程序资讯、小程序demo合揖(10月16日更新)
- Nodejs连接服务器连接mysql数据库(带事务功能)
- 热门开源项目:Guns-后台管理系统
- 【UVa 253】Cube painting
- 为何大量网站不能抓取?爬虫突破封禁的6种常见方法
- c++11 yield
- OLED(128*64)SSD1306驱动学习总结
- django + semantic ui 框架,接口测试正常,在前端点击按钮调用出现异常问题解决