一尘不染

找出数组中元素之间的最小差异

algorithm

我有一个整数数组,带有一些有限数量的值。我的工作是找到数组中任何两个元素之间的最小差异。

考虑数组包含

4, 9, 1, 32, 13

在这里,差异是4和1之间的最小值,因此答案是3。

解决该问题的算法应该是什么。另外,我不知道为什么,但是我觉得使用树可以相对容易地解决这个问题。能做到吗?


阅读 249

收藏
2020-07-28

共1个答案

一尘不染

最小差异将是按排序顺序的连续对之间的差异之一。对数组进行排序,然后遍历成对的相邻数字以寻找最小的差异:

int[] a = new int[] {4, 9, 1, 32, 13};
Arrays.sort(a);
int minDiff = a[1]-a[0];
for (int i = 2 ; i != a.length ; i++) {
    minDiff = Math.min(minDiff, a[i]-a[i-1]);
}
System.out.println(minDiff);

打印3

2020-07-28