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