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