您的位置:首页 > 其它

[leetcode] Insertion Sort List

2014-11-18 04:31 274 查看
Sort a linked list using insertion sort.

思路:思路上和insertion sort一致,需要注意的是,需要判断前一个元素是否比当前元素大,如果大的话,则需要insertion, 从head开始遍历直至找到插入的位置,注意边界条件

# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None

class Solution:
# @param head, a ListNode
# @return a ListNode
def insertionSortList(self, head):
if head == None or head.next == None:
return head
newhead = head
pre = newhead
node = newhead.next
while node != None:
if node.val < pre.val:
pre.next = node.next
if node.val < newhead.val:
node.next = newhead
newhead = node
else:
phead = newhead
while phead.next.val < node.val:
phead = phead.next
continue
node.next = phead.next
phead.next = node
node = pre.next
else:
node = node.next
pre = pre.next
return newhead

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 链表 sort