用于在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]]