Skip to content

1200. Minimum Absolute Difference 👍

  • Time: $O(\texttt{sort})$
  • Space: $O(n)$
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
 public:
  vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
    vector<vector<int>> ans;
    int min = INT_MAX;

    sort(arr.begin(), arr.end());

    for (int i = 0; i + 1 < arr.size(); ++i) {
      int diff = arr[i + 1] - arr[i];
      if (diff < min) {
        min = diff;
        ans.clear();
      }
      if (diff == min)
        ans.push_back({arr[i], arr[i + 1]});
    }

    return ans;
  }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
  public List<List<Integer>> minimumAbsDifference(int[] arr) {
    List<List<Integer>> ans = new ArrayList<>();
    int min = Integer.MAX_VALUE;

    Arrays.sort(arr);

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

    return ans;
  }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
class Solution:
  def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:
    ans = []
    min = math.inf

    arr.sort()

    for i in range(len(arr) - 1):
      diff = arr[i + 1] - arr[i]
      if diff < min:
        min = diff
        ans = []
      if diff == min:
        ans.append([arr[i], arr[i + 1]])

    return ans