檢查是否可以透過在 Python 中旋轉陣列來對其進行排序


假設我們有一個名為 nums 的數字列表,我們需要檢查是否可以透過旋轉來對 nums 進行排序。透過旋轉,我們可以將 nums 末尾的一些連續元素移到陣列的前面。

因此,如果輸入類似於 nums = [4,5,6,1,2,3],則輸出將為 True,因為我們可以透過旋轉最後三個元素並將它們傳送回第一個位置來進行排序。

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

  • n := nums 的大小
  • 如果 nums 已排序,則
    • 返回 True
  • 否則,
    • status := True
    • 對於 i 從 0 到 n - 2,執行
      • 如果 nums[i] > nums[i + 1],則
        • 退出迴圈
    • i := i + 1
    • 對於 k 從 i 到 n - 2,執行
      • 如果 nums[k] > nums[k + 1],則
        • status := False
        • 退出迴圈
    • 如果 status 為 false,則
      • 返回 False
    • 否則,
      • 如果 nums[n - 1] <= nums[0],則
        • 返回 True
      • 返回 False

示例

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

 即時演示

def solve(nums):
   n = len(nums)
   if all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)):
      return True
   else :
      status = True
      for i in range(n - 1) :
         if nums[i] > nums[i + 1] :
            break
      i += 1
      for k in range(i, n - 1) :
         if nums[k] > nums[k + 1]:
            status = False
            break
      if not status:
         return False
      else :
         if nums[n - 1] <= nums[0]:
            return True
         return False
nums = [4,5,6,1,2,3]
print(solve(nums))

輸入

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

輸出

True

更新於: 2021年1月19日

157 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.