可以使用双指针法来解决此问题。首先将 List 集合按照从小到大的顺序排序,然后使用两个指针 i 和 j,分别指向集合的第一个和第二个元素。然后依次比较相邻两个元素之间的差值,取最小值即可。

具体实现可以参考以下代码:

public static int findMinDiff(List<Integer> nums) {
    Collections.sort(nums); // 对集合进行排序
    int i = 0, j = 1;
    int minDiff = Integer.MAX_VALUE;
    while (j < nums.size()) {
        int diff = nums.get(j) - nums.get(i);
        if (diff > 0) { // 差值为正数
            minDiff = Math.min(minDiff, diff);
            i++;
        } else { // 差值为0或负数
            j++;
        }
    }
    return minDiff;
}

其中,使用了 Collections.sort() 方法对集合进行排序,然后使用 while 循环和 if 语句判断相邻两个元素之间的差值是否为正数,如果是则更新最小差值并将指针 i 向右移动一位,否则将指针 j 向右移动一位。最后返回最小差值即可。

Java 查找有序列表中的最小正差值

原文地址: https://www.cveoy.top/t/topic/lpgF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录