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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值