Leetcode Java Partition Array According to Given Pivot
업데이트:
문제
코드
class Solution {
public int[] pivotArray(int[] nums, int pivot) {
int length = nums.length;
int[] result = new int[length];
int i = 0;
int j = 0;
int k = 0;
for (int num : nums) {
if (num <= pivot) {
k++;
if (num < pivot) {
j++;
}
}
}
for (int num : nums) {
if (num < pivot) {
result[i++] = num;
} else if (num > pivot) {
result[k++] = num;
} else {
result[j++] = num;
}
}
return result;
}
}
결과
설명
- nums 내 값들을 pivot 기준으로 정렬하는 문제이다.
- 임의 i 위치에서 nums[i]의 값이 pivot 값 초과인 경우, nums의 우측으로 값을 이동한다.
- 임의 i 위치에서 nums[i]의 값이 pivot 값과 동일한 경우, pivot 값 미만인 값과 초과인 값 사이에 위치시킨다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 nums의 길이를 저장한 변수이다.
- result는 조건에 만족한 값들을 정렬하여 저장할 변수로, length 길이의 정수 배열로 초기화한다.
- i, j, k는 pivot 값 미만, 동일, 초과의 값들을 저장할 위치 변수로, 모두 0으로 초기화한다.
- nums의 값들을 순차적으로 num에 넣어, 아래를 수행한다.
- num이 pivot 미만이면 j만 증가시키고, pivot 이하이면 k도 증가시킨다.
- 다시 nums의 값들을 순차적으로 num에 넣어, 아래를 수행한다.
- num이 pivot 값 미만인 경우, result[i] 위치에 num을 넣고 i를 증가시킨다.
- num이 pivot 값 초과인 경우, result[k] 위치에 num을 넣고 k를 증가시킨다.
- num이 pivot 값과 동일한 경우, result[j] 위치에 num을 넣고 j를 증가시킨다.
- 반복이 완료되면 정렬된 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기