Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem một mảng có chứa tất cả các phần tử của một dải ô đã cho bằng Python hay không

Giả sử chúng ta có một mảng được gọi là nums. Chúng ta cũng có hai số x và y xác định một phạm vi [x, y]. Chúng ta phải kiểm tra xem mảng có chứa tất cả các phần tử trong dải ô đã cho hay không.

Vì vậy, nếu đầu vào giống như nums =[5,8,9,6,3,2,4] x =2 y =6, thì đầu ra sẽ đúng vì có tất cả các phần tử [2,3,4,5 , 6].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • temp_range:=y - x
  • đối với tôi trong phạm vi từ 0 đến kích thước của nums, hãy thực hiện
    • nếu | nums [i] |> =x và | nums [i] | <=y, sau đó
      • z:=| nums [i] | - x
      • nếu nums [z]> 0, thì
        • nums [z]:=-nums [z]
  • cnt:=0
  • đối với tôi trong phạm vi 0 đến temp_range, thực hiện
    • if i> =size of nums, then
      • ra khỏi vòng lặp
    • nếu nums [i]> 0, thì
      • trả về Sai
    • nếu không,
      • cnt:=cnt + 1
  • nếu cnt không giống với (temp_range + 1), thì
    • trả về Sai
  • trả về True

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

[5,8,9,6,3,2,4], 2, 6

Đầu ra

True