用于在python中恢复经过改组的人员队列的程序
假设我们有一个2D矩阵,其中每行包含两个值[height,count],这些值指示人的身高已给定,并且前面有“计数”个数字的人至少与他们一样高。现在考虑改组此队列,我们必须恢复队列的原始顺序。
所以,如果输入像
那么输出将是
为了解决这个问题,我们将按照以下步骤操作:
N:=矩阵的行数
根据高度增加和数量减少重新排列矩阵行
ans:=制作一个大小为N的列表,最初所有条目均为null
对于每个高度h,并在矩阵行中计数c,
如果temp>=c并且num为null,则
如果num为null或num[0]>=h,则
ans[i]:=[h,c]
从循环中出来
温度:=温度+1
温度:=0
对于每个索引i和值numans,执行
返回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]]