Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

배열이 파이썬에서 주어진 범위의 모든 요소를 ​​포함하는지 확인

<시간/>

num이라는 배열이 있다고 가정합니다. 또한 범위 [x, y]를 정의하는 두 개의 숫자 x와 y가 있습니다. 배열에 지정된 범위의 모든 요소가 포함되어 있는지 확인해야 합니다.

따라서 입력이 nums =[5,8,9,6,3,2,4] x =2 y =6과 같으면 모든 요소 [2,3,4,5]가 있으므로 출력은 참이 됩니다. ,6].

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • temp_range :=y - x
  • 0에서 숫자 크기 범위의 i에 대해
    • 만약 |숫자[i]|>=x 및 |nums[i]| <=y, 다음
      • z :=|숫자[i]| - x
      • nums[z]> 0이면
        • nums[z] :=-nums[z]
  • cnt :=0
  • 0에서 temp_range 범위에 있는 i에 대해 다음을 수행합니다.
    • i>=숫자의 크기이면
      • 루프에서 나오다
    • 숫자[i]> 0이면
      • 거짓을 반환
    • 그렇지 않으면
      • cnt :=cnt + 1
  • cnt가 (temp_range + 1)과 같지 않으면
    • 거짓을 반환
  • 참 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

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