Python程式:求解將子陣列遞增到目標陣列所需的最小遞增次數
假設我們有一個包含正值的陣列 target。現在考慮一個大小相同的陣列 initial,其所有值都為零。如果我們執行以下操作,我們需要找到從 initial 生成 target 陣列所需的最小操作次數:(從 initial 中選擇任何子陣列並將每個值加一。)
因此,如果輸入類似於 target = [2,3,4,3,2],則輸出將為 4,因為初始陣列為 [0,0,0,0,0]。第一次選擇從索引 0 到 4 的子陣列並將其增加 1,因此陣列將變為 [1,1,1,1,1],然後再次選擇從索引 0 到 4 的子陣列使其變為 [2,2,2,2,2],然後選擇索引 1 到 3 的元素並遞增,因此陣列將變為 [2,3,3,3,2],最後選擇索引 2 並使陣列變為 [2,3,4,3,2],這與 target 相同。
為了解決這個問題,我們將遵循以下步驟:
prev_num := 0
steps := 0
對於 target 中的每個 val,執行:
如果 val > prev_num,則 steps := steps + val - prev_num;否則 steps := 0
prev_num := val
返回 steps
示例
讓我們看看下面的實現,以便更好地理解
def solve(target):
prev_num = 0
steps = 0
for val in target:
steps += val-prev_num if val > prev_num else 0
prev_num = val
return steps
target = [2,3,4,3,2]
print(solve(target))輸入
[2,3,4,3,2]
輸出
4
廣告
資料結構
網路
關係型資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP