고유한 요소의 배열 번호가 있다고 가정합니다. 다음 조건을 충족하는지 여부를 확인해야 합니다.
- 요소의 범위는 1에서 n입니다.
- 배열을 오름차순으로 정렬하면 안 됩니다.
따라서 입력이 nums =[2,6,1,5,3,4]와 같으면 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=숫자 크기
- 총계 :=nums[0]
- is_sorted :=참
- 1 ~ n - 1 범위의 i에 대해
- nums[i]가 nums[i - 1]과 같으면
- 거짓을 반환
- 숫자[i] <숫자[i - 1]이면
- is_sorted :=거짓
- 총계 :=총계 + 숫자[i]
- nums[i]가 nums[i - 1]과 같으면
- is_sorted가 참이면
- 거짓을 반환
- 총계가 처음 n개의 숫자의 합과 같으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시 코드
def solve(nums): n = len(nums) total = nums[0] is_sorted = True for i in range(1,n): if nums[i] == nums[i - 1]: return False if nums[i] < nums[i - 1]: is_sorted = False total += nums[i] if is_sorted: return False return total == (n * (n + 1) // 2) nums = [2,6,1,5,3,4] print(solve(nums))
입력
[2,6,1,5,3,4]
출력
True