LC708

"""
# Definition for a Node.
class Node:
    def __init__(self, val, next):
        self.val = val
        self.next = next
"""

def cprint(head):
    tp = head
    print(tp.val)
    tp = tp.next
    while tp != head:
        print(tp.val)
        tp = tp.next

class Solution:
    def insert(self, head, insertVal):
        """
        :type head: Node
        :type insertVal: int
        :rtype: Node
        """
        r = head
        a = insertVal
        if not r:
            ret = Node(a, None)
            ret.next = ret
            return ret
        if r.next == r:
            newnode = Node(a, None)
            r.next = newnode
            newnode.next = r
            return head
        tmphead = r.next
        maxval = r.val
        minval = r.val
        while tmphead != r:
            maxval = max(maxval, tmphead.val)
            minval = min(minval, tmphead.val)
            tmphead = tmphead.next
        #print(maxval,minval)
        if maxval == minval:
            tmphead = r.next
            newnode = Node(a, None)
            r.next = newnode
            newnode.next = tmphead
        else:
            tmphead = r
            saveprev = r
            while 1:
                if tmphead.val == minval and saveprev.val == maxval:
                    break
                saveprev = tmphead
                tmphead = tmphead.next
            
            #print(tmphead.val,saveprev.val)
            if a <= minval or a >= maxval:
                #cprint(head)
                #print(saveprev.val)
                tmphead = saveprev.next
                nn = Node(a, tmphead)
                saveprev.next = nn
                #cprint(head)
            else:
                while a > tmphead.val:
                    saveprev = tmphead
                    tmphead = tmphead.next
                #print(tmphead.val)
                nn = Node(a,None)
                saveprev.next = nn
                nn.next = tmphead
        return head
            

 

while tmphead.val != minval and saveprev != maxval:


while 1:
    if tmphead.val == minval and saveprev == maxval:
        break

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值