Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra xem mảng có chứa tất cả các phần tử trong khoảng cho trước hay không trong Python


Giả sử chúng ta có một mảng nums và hai số x, y xác định khoảng [x, y]. Cần kiểm tra xem mảng có chứa tất cả các phần tử trong khoảng đó hay không.

Ví dụ, nếu đầu vào là nums = [5,8,9,6,3,2,4], x = 2, y = 6, thì đầu ra sẽ là True vì có đủ các phần tử [2,3,4,5,6].

Các bước giải quyết:

  • temp_range := y - x.
  • Duyệt i từ 0 đến kích thước nums:
    • Nếu |nums[i]| >= x và |nums[i]| <= y:
      • z := |nums[i]| - x.
      • Nếu nums[z] > 0, gán nums[z] := -nums[z] (đánh dấu đã thấy).
  • cnt := 0.
  • Duyệt i từ 0 đến temp_range:
    • Nếu i >= kích thước nums, thoát vòng lặp.
    • Nếu nums[i] > 0, trả về False (thiếu phần tử).
    • Ngược lại, cnt := cnt + 1.
  • Nếu cnt != temp_range + 1, trả về False.
  • Trả về True.

Xem ví dụ dưới đây để hiểu rõ hơn:

Ví dụ

def solve(nums, x, y):
    temp_range = y - x
    for i in range(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]
    cnt = 0
    for i in range(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