如何通过编写一个函数来快速找出数组中差值最小的两个数?

16 min read

以下是用Java语言实现的方法:

public static int[] findMinDiff(int[] nums) {
    Arrays.sort(nums);
    int n = nums.length;
    int minDiff = Integer.MAX_VALUE;
    int[] result = new int[2];
    for (int i = 0; i < n - 1; i++) {
        int diff = nums[i + 1] - nums[i];
        if (diff < minDiff) {
            minDiff = diff;
            result[0] = nums[i];
            result[1] = nums[i + 1];
        }
    }
    return result;
}

我们首先将输入数组排序,然后依次遍历数组中相邻两个数的差值,并记录差值最小的两个数。最后返回这两个数的数组。