leetcode InsertionSort list
来源:互联网 发布:怎样做淘宝淘宝课程 编辑:程序博客网 时间:2024/06/05 10:09
最近感觉自己的算法训练实在是太少,,所以刷一下leetcode,这里记录一下leetcode 排序的题目:sort list 的解答过程:
1. 这个代码出现TLE
/** * 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* pCur = head->next; ListNode* pPre = head; while ( pCur != NULL ) { //如果插入头部 if ( pCur->val < head->val ) { pPre->next = pCur->next; pCur->next = head; head = pCur; pCur = pPre->next; } //插入其他地方 else { ListNode* pTempPre = head; ListNode* pTempCur = head->next; while ( pTempCur != pCur ) { if ( pCur->val < pTempCur->val ) { pPre->next = pCur->next; pCur->next = pTempCur; pTempPre->next = pCur; break; } pTempPre = pTempCur; pTempCur = pTempPre->next; } pPre = pCur; pCur = pPre->next; } } return head; }};
2. 然后更改了一下,,变为如下代码就AC了:
/** * 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* first_unsorted; ListNode* last_sorted; ListNode* current; ListNode* trailing; last_sorted = head; while ( last_sorted->next != NULL ) { first_unsorted = last_sorted->next; //如果是要插入到链表头部 if ( first_unsorted->val < head->val ) { last_sorted->next = first_unsorted->next; first_unsorted->next = head; head = first_unsorted; } //如果是要插入其他地方 else { //找到要插入的位置 trailing = head; current = trailing->next; while ( current->val <= first_unsorted->val && current != first_unsorted ) { trailing = current; current = trailing->next; }
<span style="white-space:pre"></span>//如果位置不用变 if ( current == first_unsorted ) { last_sorted = first_unsorted; }
<span style="white-space:pre"></span>//如果位置需要变 else { last_sorted->next = first_unsorted->next; first_unsorted->next = current; trailing->next = first_unsorted; } } } return head; }};
0 0
- leetcode InsertionSort list
- 【代码积累】InsertionSort via list
- InsertionSort
- InsertionSort
- insertionsort
- InsertionSort
- Insertionsort
- insertionSort
- InsertionSort
- insertionSort debug
- leetcode-list
- LeetCode | List
- [leetcode][list] Rotate List
- [leetcode][list] Reorder List
- [leetcode][list] Reorder List
- 插入排序(InsertionSort)
- QuickSort & MergeSort & InsertionSort
- 插入算法-insertionsort
- centos7 安装 mariadb 的正确命令
- 关于Java中的I/O流的总结
- 将你的vim打造成轻巧强大的IDE
- 不止是产品经理(五)----启航
- c++对c的增强
- leetcode InsertionSort list
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)报错
- linux下IPTABLES配置详解
- easyui切换主题
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor
- Dictionary的初始化
- 第8周项目1-1实现复数类中的运算符重载
- 阿里云服务器nginx多tomcat跳转配置
- ASM data extent VS tablespace extent