檢查在 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 次檢視

開啟你的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.