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
- 如果|nums[i - 1] - nums[i]|不等於1且|nums[i - 1] - nums[i]|不等於n-1,則
- 返回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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP