题目描述:
给你个整数数组 arr,其中每个元素都 不相同。
请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。
输入:arr = [4,2,1,3]
输出:[[1,2],[2,3],[3,4]]
输入:arr = [1,3,6,10,15]
输出:[[1,3]]
java代码:
public List<List<Integer>> minimumAbsDifference(int[] arr) {
List<List<Integer>> res = new ArrayList<>();
Arrays.sort(arr);//首先对数组排序,这样子只需要比较相邻两个数字的差
int min=10000000;//应为Integer.MAXVALUE;
for(int i=1;i<arr.length;i++){
if(arr[i]-arr[i-1]>min){
continue;
}
else if(arr[i]-arr[i-1]==min){
List<Integer> a=new ArrayList<>();
a.add(arr[i-1]);
a.add(arr[i]);
res.add(a);
}
else{
res=new ArrayList<>();
List<Integer> a=new ArrayList<>();
min=arr[i]-arr[i-1];
a.add(arr[i-1]);
a.add(arr[i]);
res.add(a);
}
}
return res;
}
python代码
def minimumAbsDifference(self, arr):
"""
:type arr: List[int]
:rtype: List[List[int]]
"""
arr.sort()
res=[]
min = 1000000
i=1
while i < len(arr):
if arr[i]-arr[i-1]==min:
a=[arr[i-1],arr[i]]
res.append(a)
elif arr[i]-arr[i-1]<min:
min=arr[i]-arr[i-1]
res = []
a=[arr[i-1],arr[i]]
res.append(a)
i+=1
return res
运行结果: