Leetcode147-对链表进行插入排序(Python3实现)
其实就是普通的插排,没想到中间还是因为尾节点的next指针没处理导致死循环,题目直接看链接,这里只是记录一下思路和代码。
解题思路:
需要注意的点:
1、增加一个极小值的头节点方便后面代码的撰写。
2、记录尾节点进行判断,减少总体循环的次数。
3、记得取出要判断的点时,尾节点的next要指向next.next节点,不然就无限循环了。
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def insertionSortList(self, head: ListNode) -> ListNode: if head==None: return head #在开头建一个无穷小节点,保证所有节点都大于该节点,方便后面代码撰写 res=ListNode(-float(‘inf‘)) res.next=head now=head cur=head.next while cur: #如果尾节点小于要判断的节点,则直接略过 if cur.val>=now.val: cur,now=cur.next,cur else: pre=res #将尾节点的next指向下一个要判断的节点 now.next=cur.next #循环到左小右大的位置 while pre.next.val<cur.val: pre=pre.next #将目标节点插入特定位置 tmp=pre.next pre.next=cur cur.next=tmp #重新指向下一个要判断的节点,方便下一轮循环 cur=now.next return res.next
相关推荐
koushr 2020-11-12
范范 2020-10-28
zhaochen00 2020-10-13
Mars的自语 2020-09-27
steeven 2020-09-18
kka 2020-09-14
qiangde 2020-09-13
聚沙成塔积水成渊 2020-08-16
earthhouge 2020-08-15
aanndd 2020-08-12
范范 2020-07-30
bluetears 2020-07-28
mingyunxiaohai 2020-07-19
horizonheart 2020-07-19
liushall 2020-07-18
bluetears 2020-07-05
fengshantao 2020-07-02
liuweixiao0 2020-06-27