1200. Minimum Absolute Difference
Brute Force: Time Limit Exceed
class Solution { public List<List> minimumAbsDifference(int[] arr) { List<List> out = new ArrayList(); int minAbs = Integer.MAX_VALUE; Arrays.sort(arr); for (int i = 0; i < arr.length; i++){ for (int j= i+1; j < arr.length; j++){ minAbs = Math.min(minAbs, Math.abs(arr[i] - arr[j])); } } for (int i = 0; i < arr.length; i++){ for (int j= i+1; j < arr.length; j++){ if(Math.abs(arr[i] - arr[j]) == minAbs) { ArrayList pair = new ArrayList(); pair.add(arr[i]); pair.add(arr[j]); out.add(pair); } } } return out; } }
Easy Optimization:
class Solution { public List<List> minimumAbsDifference(int[] arr) { List<List> out = new ArrayList(); int minAbs = Integer.MAX_VALUE; Arrays.sort(arr); //LinkedHashMap to preserve the insertion order LinkedHashMap index = new LinkedHashMap(); for (int i = 0; i Math.abs(arr[i+1] - arr[i])){ minAbs = Math.abs(arr[i+1] - arr[i]); index = new LinkedHashMap(); index.put(i,i+1); } } for (Integer a : index.keySet()){ ArrayList in = new ArrayList(); in.add(arr[a]); in.add(arr[index.get(a)]); out.add(in); } return out; } }