leetcode 708 剑指 Offer II 029. 排序的循环链表 python

题目描述:

 

题解:

可以分为三种情况:

1.输入head链表为空,创建一个head节点,val等于要插入的值,next指向自身,返回head。

2.要插入的值在输入head链表中的某两个节点之间,即存在一个节点cur,nxt=cur,插入的值在这两个节点之之间,cur.val<=insertval<=nxt.val

3.要插入的值大于当前head链表中最大值或小于链表中最小值,则应该插入的位置在head链表最大最小值之间,比如示例1,如果要插入的值是0,则应该在4和1之间。即如果在head链表中存在cur和next,cur.val>nxt.val并且insertval>=cur.val或insertval<=nxt.val。

class Solution:
    def insert(self, head: 'Node', insertVal: int) -> 'Node':
        if head==None:
            head = Node(insertVal)
            head.next = head
            return head
        cur = head
        nxt = cur.next
        while nxt!=head:
            if cur.val<=insertVal and nxt.val>=insertVal:
                break
            if cur.val>nxt.val and(insertVal>=cur.val or insertVal<=nxt.val):
                break
            cur = cur.next
            nxt = nxt.next
        xnode = Node(insertVal,nxt)
        cur.next = xnode
        return head

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值