检查在 Python 中是否可以按照非递增的宽度顺序重新排列矩形


假设我们有一组用长度和宽度表示的矩形。我们可以将任何矩形旋转 90 度,旋转后宽度将变成长度,反之亦然。我们必须检查是否可以按照非递增的宽度顺序对矩形进行排序。

因此,如果输入类似于 rects = [[4, 5], [5, 7], [4, 6]],则输出为 True,因为宽度为 [5,7,6],如果我们旋转后两个矩形,则宽度将为 [5,5,4],这是非递增的。

为了解决这个问题,我们将遵循以下步骤:

  • m := 99999
  • 对于 i 从 0 到 rect 的大小,执行:
    • 如果第 i 个矩形的长度和宽度中的最大值 <= m,则:
      • m := 第 i 个矩形的长度和宽度中的最大值
    • 否则,如果第 i 个矩形的长度和宽度中的最小值 <= m
      • m := 第 i 个矩形的长度和宽度中的最小值
    • 否则:
      • 返回 False
  • 返回 True

示例

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

 在线演示

def solve(rect):
   m = 99999
   for i in range(len(rect)):
      if max(rect[i][0], rect[i][1]) <= m:
         m = max(rect[i][0], rect[i][1])
      elif min(rect[i][0], rect[i][1]) <= m:
         m = min(rect[i][0], rect[i][1])
      else:
         return False
   return True
rects = [[4, 5], [5, 7], [4, 6]]
print(solve(rects))

输入

[[4, 5], [5, 7], [4, 6]]

输出

True

更新于:2021年1月18日

81 次查看

开启你的职业生涯

完成课程后获得认证

开始学习
广告