Python 中檢查陣列是否“漂亮”


假設我們有一個包含唯一元素的陣列 nums。我們必須檢查這些條件是否滿足。

  1. 元素範圍為 1 到 n。
  2. 陣列不能按升序排序。

因此,如果輸入類似於 nums = [2,6,1,5,3,4],則輸出為 True。

為了解決這個問題,我們將遵循以下步驟:

  • n := nums 的大小
  • total := nums[0]
  • is_sorted := True
  • 對於範圍 1 到 n - 1 中的 i,執行:
    • 如果 nums[i] 與 nums[i - 1] 相同,則:
      • 返回 False
    • 如果 nums[i] < nums[i - 1],則:
      • is_sorted := False
    • total := total + nums[i]
  • 如果 is_sorted 為真,則:
    • 返回 False
  • 如果 total 等於前 n 個數字的總和,則返回 true,否則返回 false

讓我們看看下面的實現以更好地理解:

示例程式碼

線上演示

def solve(nums):
   n = len(nums)
   
   total = nums[0]
   is_sorted = True
   
   for i in range(1,n):
      if nums[i] == nums[i - 1]:
         return False
  
      if nums[i] < nums[i - 1]:
         is_sorted = False
      total += nums[i]
   
   if is_sorted:
      return False
  
   return total == (n * (n + 1) // 2)
 
nums = [2,6,1,5,3,4]
print(solve(nums))

輸入

[2,6,1,5,3,4]

輸出

True

更新於:2021年1月15日

489 次瀏覽

開啟你的職業生涯

完成課程獲得認證

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