Python程式:將陣列劃分成不相交的區間
假設我們有一個數組 nums,我們需要將其分成兩個不同的子陣列,分別稱為 left 和 right,使得:
left 子陣列中的每個元素都小於或等於 right 子陣列中的每個元素。
left 和 right 子陣列都非空。
left 子陣列具有儘可能小的尺寸。
我們需要找到這種劃分後 left 的長度。
因此,如果輸入類似於 nums = [5,0,3,8,6],則輸出將為 3,因為 left 陣列將為 [5,0,3],而 right 子陣列將為 [8,6]。
為了解決這個問題,我們將遵循以下步驟:
mx := null,temp := null,nmx := null
temp2 := 0
對於 nums 中的每個 i,執行以下操作:
如果 mx 等於 null,則:
mx := i
nmx := i
temp := temp2
temp2 := temp2 + 1
進入下一個迭代
如果 i>=mx,則:
temp2 := temp2 + 1
如果 i>nmx,則:
nmx := i
進入下一個迭代
否則:
temp := temp2
temp2 := temp2 + 1
mx := nmx
進入下一個迭代
返回 temp+1
示例
讓我們看看下面的實現以更好地理解:
def solve(nums):
mx = None
temp = None
nmx = None
temp2 = 0
for i in nums:
if(mx==None):
mx = i
nmx = i
temp = temp2
temp2+=1
continue
if(i>=mx):
temp2+=1
if(i>nmx):
nmx = i
continue
else:
temp = temp2
temp2+=1
mx = nmx
continue
return temp+1
nums = [5,0,3,8,6]
print(solve(nums))輸入
[5,0,3,8,6]
輸出
3
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP