nums라고 하는 정렬되지 않은 숫자 배열이 있고 모든 요소가 0에서 n-1 사이의 범위에 있다고 가정합니다. num의 인접한 요소를 필요한 만큼 교체할 수 있지만 이러한 요소 간의 절대 차이가 1일 때만 가능합니다. num을 정렬할 수 있는지 여부를 확인해야 합니다.
따라서 입력이 nums =[1, 0, 3, 2, 5, 4]와 같으면 이러한 쌍 [(1, 0), (3, 2), (5 , 4)] [0, 1, 2, 3, 4, 5]를 정렬합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 0에서 nums - 2 크기의 범위에 있는 i에 대해
- 숫자[i]> 숫자[i+1]이면
- nums[i] - nums[i+1]이 1과 같으면
- 숫자[i]와 숫자[i+1] 교환
- 그렇지 않으면
- 거짓을 반환
- nums[i] - nums[i+1]이 1과 같으면
- 숫자[i]> 숫자[i+1]이면
- 참 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): for i in range(len(nums) - 1): if nums[i] > nums[i+1]: if nums[i] - nums[i+1] == 1: nums[i], nums[i+1] = nums[i+1], nums[i] else: return False return True nums = [1, 0, 3, 2, 5, 4] print(solve(nums))
입력
[1, 0, 3, 2, 5, 4]
출력
True