题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个循环链表,链表内的数值按非降序排列,现在给一个要插入的值,返回插完后的链表头。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"""
# 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':
if not head:
head = Node(insertVal)
head.next = head
return head

cur = head
while cur.next != head:
if cur.next.val < cur.val:
if cur.next.val >= insertVal:
# 插入的是最小值
break
elif cur.val <= insertVal:
# 插入的是最大值
break
# 处理中间情况
if cur.val <= insertVal <= cur.next.val:
break
cur = cur.next
cur.next = Node(insertVal, cur.next)
return head