在 Python 中尋找最短無序連續子陣列
假設我們有一個整數陣列,我們需要找到這樣一個連續子陣列,如果我們僅按升序對該子陣列進行排序,那麼整個陣列也將被排序。我們需要找到最短的此類子陣列並輸出其長度。因此,如果陣列是 [2,6,4,8,10,9,15],那麼輸出將為 5。陣列將為 [6,4,8,10,9]
要解決此問題,我們將遵循以下步驟 -
res := 將 nums 作為一個數組進行排序
ans := 0
將 r 設定為連結串列
對於從 0 到 res 長度的 i
如果 nums[i] 與 res[i] 不同,則將 i 插入 r
如果 r 的長度為 0,則返回 0;如果 r 的長度為 1,則返回 1
返回 r 的最後元素 – r 的第一個元素 + 1
示例(Python)
讓我們看看以下實現,以獲得更好的理解 -
class Solution(object): def findUnsortedSubarray(self, nums): res = sorted(nums) ans = 0 r = [] for i in range(len(res)): if nums[i] != res[i]: r.append(i) if not len(r): return 0 if len(r) == 1: return 1 return r[-1]-r[0]+1 ob1 = Solution() print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))
輸入
[2,6,4,8,10,9,15]
輸出
5
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP