Java 查找有序列表中的最小正差值
可以使用双指针法来解决此问题。首先将 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 向右移动一位。最后返回最小差值即可。
原文地址: https://www.cveoy.top/t/topic/lpgF 著作权归作者所有。请勿转载和采集!