在 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
广告