Python程式檢查陣列是否已排序並旋轉
假設我們有一個名為nums的陣列,我們需要檢查該陣列是否最初按非遞減順序排序,然後旋轉了一些位置(可能是零)還是沒有。陣列中也可能存在重複項。
因此,如果輸入類似於nums = [12,15,2,5,6,9],則輸出將為True,因為它向右旋轉了兩個位置。
為了解決這個問題,我們將遵循以下步驟:
j := 0
當 j < nums 的大小 - 1 且 nums[j] <= nums[j + 1] 時,執行
j := j + 1
res := (從索引 j + 1 到 nums 結尾的 nums 的子陣列)連線(從索引 0 到 j 的 nums 的子陣列)
對於 i 從 0 到 res 的大小 - 1,執行
如果 res[i] > res[i + 1],則
返回 False
返回 True
示例(Python)
讓我們看看以下實現以更好地理解:
def solve(nums): j = 0 while (j < len(nums) - 1 and nums[j] <= nums[j + 1]): j += 1 res = nums[j + 1 : len(nums)] + nums[0:j + 1] for i in range(len(res) - 1): if res[i] > res[i + 1]: return False return True nums = [12,15,2,5,6,9] print(solve(nums))
輸入
[12,15,2,5,6,9]
輸出
True
廣告