檢查Python陣列元素是否連續
假設我們有一個名為nums的數字陣列。我們必須檢查它是否包含連續的值。
因此,如果輸入類似於nums = [6, 8, 3, 5, 4, 7],則輸出將為true,因為元素為3, 4, 5, 6, 7, 8。
為了解決這個問題,我們將遵循以下步驟:
- 如果nums的大小< 1,則
- 返回False
- min_val := nums的最小值,max_val := nums的最大值
- 如果(max_val - min_val + 1)與nums的大小相同,則
- 對於i從0到nums的大小的範圍,執行
- 如果nums[i] < 0,則
- j:= -nums[i] - min_val
- 否則,
- j := nums[i] - min_val
- 如果nums[j] > 0,則
- nums[j] := -nums[j]
- 否則,
- 返回False
- 如果nums[i] < 0,則
- 返回True
- 對於i從0到nums的大小的範圍,執行
- 返回False
讓我們看看下面的實現以更好地理解:
示例
def solve(nums): if len(nums) < 1: return False min_val = min(nums) max_val = max(nums) if max_val - min_val + 1 == len(nums): for i in range(len(nums)): if nums[i] < 0: j = -nums[i] - min_val else: j = nums[i] - min_val if nums[j] > 0: nums[j] = -nums[j] else: return False return True return False nums = [6, 8, 3, 5, 4, 7] print(solve(nums))
輸入
[6, 8, 3, 5, 4, 7]
輸出
True
廣告