Python程式:檢查右旋轉後的陣列是否為前n個自然數的遞增或遞減陣列


假設我們有一個名為nums的數字列表,其中包含n個元素。我們必須檢查是否可以透過任何次數的右移nums來建立一個包含前n個自然數的遞增或遞減列表,例如[1, 2, ..., n]或[n, n - 1, ..., 1]。

因此,如果輸入類似於nums = [5,6,1,2,3,4],則輸出為True,因為我們可以將其右移四次以使陣列變為[1,2,3,4,5,6]

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

  • n := nums的長度
  • 對於i從1到n-1迴圈:
    • 如果|nums[i - 1] - nums[i]|不等於1且|nums[i - 1] - nums[i]|不等於n-1,則
      • 返回False
  • 返回True

示例

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

def solve(nums):
   n = len(nums)
   for i in range(1, n):
      if abs(nums[i - 1] - nums[i]) != 1 and abs(nums[i - 1] - nums[i]) != n - 1:
         return False
   return True

nums = [5,6,1,2,3,4]
print(solve(nums))

輸入

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

輸出

True

更新於:2021年10月14日

81 次瀏覽

開啟你的職業生涯

完成課程獲得認證

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