Python程式:查詢完成任務所需的最小時間(相同型別任務之間有k個時間間隔)
假設我們有一個名為tasks的整數列表,其中每個專案代表不同的任務型別,我們還有一個非負整數k。每個任務需要一個單位時間來完成,並且必須按正確的順序完成任務,但我們必須在執行兩個相同型別任務之間留出k個單位時間。在任何時候,我們可以執行任務或等待。我們必須找到完成所有任務所需的時間量。
因此,如果輸入類似於tasks = [0, 1, 1, 2] k = 2,則輸出將為6,因為前兩個任務是不同型別的,因此可以無需任何間隔地執行它們,現在在時間2,下一個任務是相同型別的任務,我們必須等待2個時間槽,然後執行任務,最後是其他型別的任務,型別2。所以執行此任務。所以它就像[0, 1, 等待, 等待, 1, 2]。由此我們可以確定,我們需要6個時間槽。
為了解決這個問題,我們將遵循以下步驟:
- tick := 0
- slot := 新建一個對映
- 對於tasks中的每個t,執行:
- 如果t在slot中,則tf := slot[t]
- 如果tf不為空並且tf - tick > 0,則
- tick := tick + tf - tick
- tick := tick + 1
- slot[t] := tick + k
- 返回tick
示例
讓我們來看下面的實現,以便更好地理解:
def solve(tasks, k):
tick = 0
slot = {}
for t in tasks:
tf = slot.get(t)
if tf is not None and tf - tick > 0:
tick += tf - tick
tick += 1
slot[t] = tick + k
return tick
tasks = [0, 1, 1, 2]
k = 2
print(solve(tasks, k))輸入
[0, 1, 1, 2]
輸出
6
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP