在 Python 中檢查陣列是否包含給定範圍內的所有元素
假設我們有一個名為 nums 的陣列。我們還有兩個數字 x 和 y 定義一個範圍 [x, y]。我們必須檢查陣列是否包含給定範圍內的所有元素。
因此,如果輸入類似於 nums = [5,8,9,6,3,2,4] x = 2 y = 6,則輸出將為 true,因為存在所有元素 [2,3,4,5,6]。
為了解決這個問題,我們將遵循以下步驟 -
- temp_range := y - x
- 對於從 0 到 nums 大小的範圍內的 i,執行以下操作
- 如果 |nums[i]| >= x 且 |nums[i]| <= y,則
- z := |nums[i]| - x
- 如果 nums[z] > 0,則
- nums[z] := -nums[z]
- 如果 |nums[i]| >= x 且 |nums[i]| <= y,則
- cnt := 0
- 對於從 0 到 temp_range 的範圍內的 i,執行以下操作
- 如果 i >= nums 的大小,則
- 退出迴圈
- 如果 nums[i] > 0,則
- 返回 False
- 否則,
- cnt := cnt + 1
- 如果 i >= nums 的大小,則
- 如果 cnt 與 (temp_range + 1) 不相同,則
- 返回 False
- 返回 True
讓我們看看下面的實現以更好地理解 -
示例
def solve(nums, x, y) : temp_range = y - x for i in range(0, len(nums)): if abs(nums[i]) >= x and abs(nums[i]) <= y: z = abs(nums[i]) - x if (nums[z] > 0) : nums[z] = nums[z] * -1 cnt = 0 for i in range(0, temp_range + 1): if i >= len(nums): break if nums[i] > 0: return False else: cnt += 1 if cnt != temp_range + 1: return False return True nums = [5,8,9,6,3,2,4] x = 2 y = 6 print(solve(nums, x, y))
輸入
[5,8,9,6,3,2,4], 2, 6
輸出
True
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP