leetcode_insertion_sort_list 发表于 2016-12-01 难度:Medium 解题思路:按照插入排序的思路搞。 代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445/** * 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* dummy = new ListNode(-1); ListNode* new_cur = head; while(new_cur != NULL) { ListNode *search_node = dummy; while(search_node->next != NULL) { if(search_node->next->val < new_cur->val) { search_node = search_node->next; } else { break; } } if(search_node->next == NULL) { search_node->next = new_cur; new_cur = new_cur->next; search_node->next->next = NULL; } else { ListNode *search_node_next = search_node->next; ListNode *new_cur_next = new_cur->next; search_node->next = new_cur; new_cur->next = search_node_next; new_cur = new_cur_next; } } return dummy->next; }}; 运行结果:89ms,超过17.82%