检查在 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
- 如果第 i 个矩形的长度和宽度中的最大值 <= m,则:
- 返回 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
广告