程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

劍指 Offer II 029. 排序的循環鏈表Python實現

編輯:Python

給定循環單調非遞減列表中的一個點,寫一個函數向這個列表中插入一個新元素 insertVal ,使這個列表仍然是循環升序的。

給定的可以是這個列表中任意一個頂點的指針,並不一定是這個列表中最小元素的指針。

如果有多個滿足條件的插入位置,可以選擇任意一個位置插入新的值,插入後整個列表仍然保持有序。

如果列表為空(給定的節點是 null),需要創建一個循環有序列表並返回這個節點。否則。請返回原先給定的節點。

示例 1:

輸入:head = [3,4,1], insertVal = 2
輸出:[3,4,1,2]
解釋:在上圖中,有一個包含三個元素的循環有序列表,你獲得值為 3 的節點的指針,我們需要向表中插入元素 2 。新插入的節點應該在 1 和 3 之間,插入之後,整個列表如上圖所示,最後返回節點 3 。

示例 2:

輸入:head = [], insertVal = 1
輸出:[1]
解釋:列表為空(給定的節點是 null),創建一個循環有序列表並返回這個節點。
示例 3:

輸入:head = [1], insertVal = 0
輸出:[1,0]

提示:

0 <= Number of Nodes <= 5 * 10^4
-10^6 <= Node.val <= 10^6
-10^6 <= insertVal <= 10^6

注意:本題與主站 708 題相同: https://leetcode-cn.com/problems/insert-into-a-sorted-circular-linked-list/

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/4ueAj6
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

""" # 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':
node = Node()
node.val = insertVal
if head is None:
node.next=node
return node
L = head
while L.next != head:
if (L.val <= insertVal and insertVal <= L.next.val) or (L.val > L.next.val and insertVal < L.next.val) or (L.val > L.next.val and L.val < insertVal):
break
L = L.next
node.next = L.next
L.next = node
return head

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved