Leetcode Java Minimum Difference Between Largest and Smallest Value in Three Moves
업데이트:
문제
코드
class Solution {
public int minDifference(int[] nums) {
int length = nums.length;
if (length < 5) {
return 0;
} else {
int result = Integer.MAX_VALUE;
Arrays.sort(nums);
for (int i = 0; i < 4; i++) {
result = Math.min(result, nums[length - 4 + i] - nums[i]);
}
return result;
}
}
}
결과
설명
-
nums 내 임의 값을 배열 내 값으로 세 번까지 변경하여 최댓값과 최솟값의 차이가 최소가 되는 값을 구하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 nums의 결과를 저장한 변수로 5 미만이면 최댓값과 최솟값이 항상 0이 되므로, 0을 주어진 문제의 결과로 반환한다.
- result는 결과를 저장할 변수로, 정수의 최댓값을 넣어 초기화한다.
- nums의 값들을 오름차순 정렬 후 0부터 4 미만까지 i를 증가시키며 아래를 반복한다.
- result에 result와 nums의 마지막 위치인 $length - 1$에서 $i - 3$번째 값에 nums[i]를 뺀 최댓값과 최솟값이 가능한 경우의 차잇값 중 작은 값을 넣어준다.
- 반복이 완료되면 최소 차잇값인 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기