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]
- nếu | nums [i] |> =x và | nums [i] | <=y, sau đó
- 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
- if i> =size of nums, then
- 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