插入时,就是要把这个数插入到一个位置,让 prev <= i <= succ。如果不存在这样的位置,那就找到一个位置,满足 prev > succ > i 或 i > prev > succ。
"""
# Definition for a Node.
class Node:
def __init__(self, val=None, next=None):
self.val = val
self.next = next
"""
class Solution:
def insert(self, head: 'Node', insertVal: int) -> 'Node':
n = Node(insertVal, None)
if head is None:
n.next = n
return n
p1, p2, start = head, head.next, True
while True:
if not start and id(p1) == id(head):
n.next = p2.next
p2.next = n
return head
elif p1.val <= n.val <= p2.val:
n.next = p1.next
p1.next = n
return head
elif p1.val > p2.val and (n.val >= p1.val or n.val <= p2.val):
n.next = p1.next
p1.next = n
return head
start = False
p1, p2 = p2, p2.next