检查数组是否包含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,执行

    • z:= | nums [i] | - X

    • 如果nums [z]> 0,则

    • nums [z]:= -nums [z]

    • 如果| nums [i] | > = x和| nums [i] | <= y,然后

    • cnt:= 0

    • 对于范围在0到temp_range之间的我,执行

      • cnt:= cnt + 1

      • 返回False

      • 从循环中出来

      • 如果i> = nums的大小,则

      • 如果nums [i]> 0,则

      • 除此以外,

      • 如果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