안녕하세요. 오늘은 5월 5주차 두번째 알고리즘인 Maximum Gap 풀이를 작성해보겠습니다.
요약
nums
배열을 정렬한 후에 인접한 인덱스의 gap
이 가장 큰 값을 찾아서 return하는 문제입니다.
간단한 문제라고 생각했습니다.
nums
를 정렬한 후에 for문을 순회하면서 가장 큰gap
을 찾았습니다. 처음 솔루션이 Accept를 받았습니다.
if (nums.length < 2) return 0;
배열의 길이가 2 이하라면 gap
을 구할 수 없기 때문에 0을 return합니다.
Arrays.sort(nums);
int maxGap = 0;
배열을 정렬해준 후에, 가장 큰 gap
을 구할 변수를 선언해줍니다.
for (int i = 0; i < nums.length - 1; i++) {
int gap = Math.abs(nums[i] - nums[i + 1]);
if (maxGap < gap) maxGap = gap;
}
그 후에 for문을 순회하면서 Math.abs(nums[i] - nums[i + 1])
이라는 방법으로 인접한 인덱스 값의 gap
을 절대값 처리해줍니다.
그 후에 maxGap
보다 gap
이 크다면 maxGap
을 바꿔줍니다.
class Solution {
public int maximumGap(int[] nums) {
if (nums.length < 2) return 0;
Arrays.sort(nums);
int maxGap = 0;
for (int i = 0; i < nums.length - 1; i++) {
int gap = Math.abs(nums[i] - nums[i + 1]);
if (maxGap < gap) maxGap = gap;
}
return maxGap;
}
}
어제 풀었던 퀸 문제보다 훨씬 간단하게 풀었습니다.
이번 포스팅도 읽어주셔서 감사합니다 :)