[LeetCode] Minimum Absolute Difference

아르당·5일 전

LeetCode

목록 보기
251/261
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

서로 다른 정수 배열 arr이 주어졌을 때, 임의의 두 요소 간의 절댓값 차이가 최소인 모든 쌍을 찾아라.
다음과 같은 각 [a, b]를 오름차순으로 정렬한 리스트를 반환해라.

  • a, b는 arr에 있다.
  • a < b
  • b - a는 arr에 있는 두 요소의 최소 차이의 절대 값과 같다.

Example

#1
Input: arr = [4, 2, 1, 3]
Output: [[1, 2], [2, 3], [3, 4]]
Explanation: 최소 차이의 절대값은 1이다. 값의 차가 1인 모든 쌍들을 오름차순 정렬한 리스트이다.

#2
Input: arr = [1, 3, 6, 10, 15]
Output: [[1, 3]]

#3
Input: arr = [3, 8, -10, 23, 19, -4, -14, 27]
Output: [[-14, -10], [19, 23], [23, 27]]

Constraints

  • 2 <= arr.length <= 10^5
  • -10^6 <= arr[i] <= 10^6

Solved

class Solution {
    public List<List<Integer>> minimumAbsDifference(int[] arr) {
        Arrays.sort(arr);

        List<List<Integer>> result = new ArrayList<>();
        int min = Integer.MAX_VALUE;

        for(int i = 0; i < arr.length - 1; i++){
            int dif = arr[i + 1] - arr[i];
            
            if(dif < min){
                min = dif;
                result.clear();
                result.add(Arrays.asList(arr[i], arr[i + 1]));
            }else if(dif == min){
                result.add(Arrays.asList(arr[i], arr[i + 1]));
            }
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글