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