leetcode -- Insertion Sort List -- 重点,需要优化

https://leetcode.com/problems/insertion-sort-list/

思路1

参考http://www.cnblogs.com/zuoyuan/p/3700105.html

思路2

参考 http://blog.csdn.net/linhuanmars/article/details/21144553
需要想清楚再写code。终止条件是什么,有哪些变量循环。。。注意加上dummy_node

自己写的code 效率低,可以AC. 复习的时候注意要看看如何优化

class Solution(object):
    def insertionSortList(self, head):
        """ :type head: ListNode :rtype: ListNode """
        if not head:
            return head

        dummy_node = ListNode(0)
        dummy_node.next = head

        cur, e = head.next, head #s 是每一次的搜索开始节点,p是previous s. e 是cur的前面那个node
        p = dummy_node
        while cur:
            s, p = dummy_node.next, dummy_node

            while s != cur and s.val <= cur.val:
                p,s = s, s.next
            if s == cur:
                e, cur = cur, cur.next
            else:
                e.next, tmp = cur.next, cur.next
                p.next, cur.next = cur, s
                cur = tmp
        return dummy_node.next

你可能感兴趣的:(LeetCode)