首页 > 其他 > 详细

[leetcode]Insertion Sort List

时间:2014-02-13 04:59:50      阅读:319      评论:0      收藏:0      [点我收藏+]

如果那天前先做了这道题就好了。。言归正传,需要两个dummy节点,本质上就是从原来的链表中删除最小的,加到新的链表中去。

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
class Solution {
public:
    ListNode *insertionSortList(ListNode *head) {
        ListNode *o_dummy = new ListNode(0);
        ListNode *n_dummy = new ListNode(0);
        o_dummy->next = head;
        ListNode *last = n_dummy;
        while (o_dummy->next != NULL) {
            ListNode *prev = o_dummy;
            ListNode *node = prev->next;
            // find node with min val
            ListNode *min_node = node;
            ListNode *prev_node = prev;
            while (node != NULL) {
                if (node->val < min_node->val) {
                    min_node = node;
                    prev_node = prev;
                }
                node = node->next;
                prev = prev->next;
            }
            prev_node->next = min_node->next;
             
            // insert to new list
            min_node->next = NULL;
            last->next = min_node;
            last = min_node;
        }
        return n_dummy->next;
    }
};

  

[leetcode]Insertion Sort List

原文:http://www.cnblogs.com/lautsie/p/3546609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!