nums라는 숫자 목록이 있다고 가정하고 회전을 사용하여 숫자를 정렬할 수 있는지 여부를 확인해야 합니다. 회전을 통해 num의 끝에서 일부 인접한 요소를 이동하여 배열 앞에 배치할 수 있습니다.
따라서 입력이 nums =[4,5,6,1,2,3]과 같으면 마지막 세 요소를 회전하여 정렬하고 처음으로 다시 보낼 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n :=숫자 크기
- 숫자가 정렬되면
- 참 반환
- 그렇지 않으면
- 상태 :=참
- 0 ~ n - 2 범위의 i에 대해
- 숫자[i]> 숫자[i + 1]이면
- 루프에서 나오다
- 숫자[i]> 숫자[i + 1]이면
- 나는 :=나는 + 1
- i ~ n - 2 범위의 k에 대해
- 숫자[k]> 숫자[k + 1]이면
- 상태 :=거짓
- 루프에서 나오다
- 숫자[k]> 숫자[k + 1]이면
- 상태가 거짓이면
- 거짓을 반환
- 그렇지 않으면
- 숫자[n - 1] <=숫자[0]이면
- 참 반환
- 거짓을 반환
- 숫자[n - 1] <=숫자[0]이면
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): n = len(nums) if all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)): return True else : status = True for i in range(n - 1) : if nums[i] > nums[i + 1] : break i += 1 for k in range(i, n - 1) : if nums[k] > nums[k + 1]: status = False break if not status: return False else : if nums[n - 1] <= nums[0]: return True return False nums = [4,5,6,1,2,3] print(solve(nums))
입력
[4,5,6,1,2,3]
출력
True