Python程式恢復打亂的人員佇列
假設我們有一個二維矩陣,每一行包含兩個值 [身高,人數],表示該人的身高以及至少與該人身高相同的人數。
現在假設這個佇列被打亂了,我們需要恢復佇列的原始順序。
2 | 2 |
4 | 0 |
5 | 0 |
例如,如果輸入是:
4 | 0 |
5 | 0 |
2 | 2 |
那麼輸出將是:
- 為了解決這個問題,我們將遵循以下步驟:
- N := 矩陣的行數
- 根據身高遞增和人數遞減重新排列矩陣行
- ans := 建立一個大小為 N 的列表,初始所有條目均為空
- 對於矩陣每一行中的身高 h 和人數 c,執行以下操作:
- temp := 0
- 對於每個索引 i 和值 num ans,執行以下操作:
- 如果 temp >= c 且 num 為空,則
- ans[i] := [h, c]
- 退出迴圈
- 如果 num 為空或 num[0] >= h,則
- 對於每個索引 i 和值 num ans,執行以下操作:
- temp := temp + 1
返回 ans
讓我們來看下面的實現來更好地理解
class Solution: def solve(self, matrix): N = len(matrix) matrix.sort(key=lambda x: [x[0], -x[1]]) ans = [None] * N for h, c in matrix: temp = 0 for i, num in enumerate(ans): if temp >= c and num is None: ans[i] = [h, c] break if num is None or num[0] >= h: temp += 1 return ans ob = Solution() matrix = [ [2, 2], [4, 0], [5, 0] ] print(ob.solve(matrix))
線上演示
[[2, 2],[4, 0],[5, 0]]
輸入
[[4, 0], [5, 0], [2, 2]]
列印頁面