[leetcode #1200] Minimum Absolute Difference

Seongyeol Shin·2021년 12월 20일
0

leetcode

목록 보기
109/196
post-thumbnail

Problem

Given an array of distinct integers arr, find all pairs of elements with the minimum absolute difference of any two elements.

Return a list of pairs in ascending order(with respect to pairs), each pair [a, b] follows

・ a, b are from arr
・ a < b
・ b - a equals to the minimum absolute difference of any two elements in arr

Example 1:

Input: arr = [4,2,1,3]
Output: [[1,2],[2,3],[3,4]]
Explanation: The minimum absolute difference is 1. List all pairs with difference equal to 1 in ascending order.

Example 2:

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

Example 3:

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

Constraints:

・ 2 <= arr.length <= 10⁵
・ -10⁶ <= arr[i] <= 10⁶

Idea

아주 쉬운 문제다.

우선 주어진 배열을 정렬한다. 이후 배열을 탐색하면서 인접한 값의 차가 최소가 되는 값을 구한다. 배열을 탐색해서 최소가 되는 값과 같을 경우 list에 두 쌍을 추가해준다.

list를 리턴하면 끝!

Solution

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

        for (int i=0; i < arr.length-1; i++) {
            if (minAbs > arr[i+1] - arr[i]) {
                minAbs = arr[i+1] - arr[i];
            }
        }

        List<List<Integer>> res = new ArrayList<>();
        for (int i=0; i < arr.length-1; i++) {
            if (minAbs == arr[i+1] - arr[i]) {
                res.add(Arrays.asList(arr[i], arr[i+1]));
            }
        }

        return res;
    }
}

운이 좋아서 그런지 결과가 잘 나왔다.

Reference

https://leetcode.com/problems/minimum-absolute-difference/

profile
서버개발자 토모입니다

0개의 댓글