nums라는 배열이 있다고 가정하고 배열이 원래 내림차순으로 정렬되었는지 확인한 다음 몇 위치(0일 수도 있음)를 회전했는지 여부를 확인해야 합니다. 어레이에 중복이 있을 수도 있습니다.
따라서 입력이 nums =[12,15,2,5,6,9]와 같으면 두 위치만큼 오른쪽으로 회전하기 때문에 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
j :=0
-
동안 j
-
j :=j + 1
-
-
res :=(인덱스 j + 1에서 nums 끝까지의 nums의 하위 배열) concatenate (nums의 인덱스 0에서 j까지 nums의 하위 배열)
-
범위 0에서 res - 1 크기의 i에 대해 수행
-
res[i]> res[i + 1]이면
-
거짓을 반환
-
-
-
참을 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): j = 0 while (j < len(nums) - 1 and nums[j] <= nums[j + 1]): j += 1 res = nums[j + 1 : len(nums)] + nums[0:j + 1] for i in range(len(res) - 1): if res[i] > res[i + 1]: return False return True nums = [12,15,2,5,6,9] print(solve(nums))
입력
[12,15,2,5,6,9]
출력
True