在 Python 中恢复洗牌队列的程序

在 Python 中恢复洗牌队列的程序

假设我们有一个二维矩阵,其中每行包含两个值 [height, count],表示人的身高和在他们前面至少与他们一样高的人数。现在考虑这个队列被洗牌了,我们需要恢复队列的原始顺序。

因此,如果输入如下:

2 2
4 0
5 0

则输出将是:

4 0
5 0
2 2

为了解决这个问题,我们将按照以下步骤进行:

  • N := 矩阵行数
  • 基于身高递增和人数递减重新排列矩阵行
  • ans := 大小为 N 的列表,初始所有条目均为 null
  • 对于矩阵行中的每个身高 h 和人数 c,请执行以下操作:
    • temp := 0
    • 对于每个索引 i 和值 num ans,请执行以下操作:
      • 如果 temp >= c,且 num 为空,则
      • ans[i] := [h, c]
      • 跳出循环
      • 如果 num 为空或 num[0] >= h,则
      • temp := temp + 1
  • 返回 ans

让我们看下面的实现,以更好地理解:

更多Python相关文章,请阅读:Python 教程

示例

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]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程