n개의 요소가 있는 nums라는 숫자 목록이 있다고 가정합니다. [1, 2, ..., n] 또는 [n, n - 1, ..., 1]과 같이 증가 또는 감소 방식으로 처음 n개의 자연수로 목록을 만들 수 있는지 여부를 확인해야 합니다. 몇 번이든 오른쪽으로 숫자를 지정합니다.
따라서 입력이 nums =[5,6,1,2,3,4]와 같으면 출력은 True가 됩니다. 왜냐하면 배열을 [1,2,3,4, 5,6]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=숫자 크기
- 1에서 n - 1 사이의 i에 대해 다음을 수행합니다.
- 만약 |숫자[i - 1] - 숫자[i]| 1이 아니고 |nums[i - 1] - nums[i]| n-1이 아닌 경우
- 거짓을 반환
- 만약 |숫자[i - 1] - 숫자[i]| 1이 아니고 |nums[i - 1] - nums[i]| n-1이 아닌 경우
- 참 반환
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): n = len(nums) for i in range(1, n): if abs(nums[i - 1] - nums[i]) != 1 and abs(nums[i - 1] - nums[i]) != n - 1: return False return True nums = [5,6,1,2,3,4] print(solve(nums))
입력
[5,6,1,2,3,4]
출력
True