Menu
CoddyTech

Next Permutation

정수 배열 nums가 주어지며, 값은 반복될 수 있습니다. 이 값들의 서로 다른 모든 배열을 사전 순서로 정렬한다고 생각해 보세요. 두 배열이 처음으로 달라지는 인덱스에서 비교하여, 그 위치의 값이 더 작은 배열이 먼저 옵니다. 이 순서에서 nums 바로 다음에 오는 배열을 반환하세요.

nums가 이미 가장 큰 배열이라면 그다음 배열은 없습니다. 가장 작은 배열, 즉 값을 오름차순으로 정렬한 배열을 반환하세요. O(n) 시간과 O(1) 추가 메모리를 목표로 하세요.

함수

nextPermutation(nums: integer-array) → integer-array
numsinteger-array
현재 값의 배치
반환값integer-array
사전식 순서에서 다음 배열이거나, nums가 가장 큰 경우 오름차순으로 정렬된 값

제약 조건

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 1000

예제

입력
nums = [2, 5, 4, 1]
출력
[4, 1, 2, 5]
설명
꼬리 5, 4, 1가 감소하고 있으므로, 그 앞의 2는 커져야 합니다. 2보다 큰 꼬리 값 중 가장 작은 값은 4입니다. 그 자리에 2를 넣고 나머지는 오름차순으로 정렬합니다: [4, 1, 2, 5].
challenge icon

후속 질문

대신 이전 순열, 즉 사전순으로 nums 바로 앞에 오는 순열은 어떻게 찾을 수 있을까요?

코드 초기화
def nextPermutation(nums):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

nums = [2, 5, 4, 1]

예상 출력

[4, 1, 2, 5]