用于在python中恢复经过改组的人员队列的程序

假设我们有一个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]]
    猜你喜欢