在 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]
  • cnt := 0
  • 對於從 0 到 temp_range 的範圍內的 i,執行以下操作
    • 如果 i >= nums 的大小,則
      • 退出迴圈
    • 如果 nums[i] > 0,則
      • 返回 False
    • 否則,
      • cnt := cnt + 1
  • 如果 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

更新於: 2020-12-30

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.