题目描述
思路
我们先把数组按升序的顺序排好序,然后就只需要一层for循环就可以解决这个问题。
从第第一个数开始,使用双指针,比如第一个数减去第二个数,得到差值,然后把差值使用ArrayList存起来。同时移动指针。
遍历完成以后,我们可以把ArrayList按从小到大的顺序排好序。返回第一个数字,这就是我们需要的。
题目中的坑
这道题目比较简单,唯一需要注意的是不要把compare的条件写反。
代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 求最小差值
* @param a int整型一维数组 数组a
* @return int整型
*/
public int minDifference(int[] a) {
// write code here
List<Integer> list = new ArrayList<>();
Arrays.sort(a);
for (int i = 0; i < a.length - 1; i++) {
list.add(a[i] - a[i + 1]);
}
list.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
return Math.abs(list.get(0));
}
}