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]]
打印页面