num이라는 숫자 배열이 있다고 가정합니다. 연속된 값이 포함되어 있는지 확인해야 합니다.
따라서 입력이 nums =[6, 8, 3, 5, 4, 7]과 같으면 요소가 3, 4, 5, 6, 7, 8이므로 출력은 true가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 숫자의 크기가 1보다 작으면
- 거짓을 반환
- min_val :=최소값, max_val :=최대값
- (max_val - min_val + 1)이 nums의 크기와 같으면
- 0~숫자 크기 범위의 i에 대해
- nums[i] <0이면
- j:=-nums[i] - min_val
- 그렇지 않으면
- j :=nums[i] - 최소값
- nums[j]> 0이면
- nums[j] :=-nums[j]
- 그렇지 않으면
- 거짓을 반환
- nums[i] <0이면
- 참 반환
- 0~숫자 크기 범위의 i에 대해
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(nums): if len(nums) < 1: return False min_val = min(nums) max_val = max(nums) if max_val - min_val + 1 == len(nums): for i in range(len(nums)): if nums[i] < 0: j = -nums[i] - min_val else: j = nums[i] - min_val if nums[j] > 0: nums[j] = -nums[j] else: return False return True return False nums = [6, 8, 3, 5, 4, 7] print(solve(nums))
입력
[6, 8, 3, 5, 4, 7]
출력
True