题目链接:1200. 最小绝对差(简单)
算法原理:
解法:模拟
20ms击败78.39%
时间复杂度O(Nlogn)
思路很简单👇
①排序确保最小绝对差在紧邻的两数间
②先来一次遍历找到最小绝对差
③再来一次遍历把等于最小绝对值差的两数添加进顺序表返回
Java代码:
class Solution { public List<List<Integer>> minimumAbsDifference(int[] nums) { List<List<Integer>> ret=new ArrayList<>(); Arrays.sort(nums); //找到最小绝对值差 int n=nums.length; int mi=0x3f3f3f3f; for(int i=1;i<n;i++) mi=Math.min(mi,nums[i]-nums[i-1]); //筛选出最小绝对值差的元素对 for(int i=1;i<n;i++){ if(nums[i]-nums[i-1]==mi){ List<Integer> tmp=new ArrayList<>(); tmp.add(nums[i-1]); tmp.add(nums[i]); ret.add(tmp); } } return ret; } }