使用Java streams从int数组中获取缺少的数字
我有以下数组
int [] a = {5,3,10,8,4,2,9,6};
我正试图从数组中找到丢失的数字
private static int getMissingNumber(int[] a) {
int expectedSum = IntStream.rangeClosed(1, 10)
.reduce(0, Integer::sum);
int actualSum = Arrays.stream(a).reduce(0, Integer::sum);
return expectedSum-actualSum;
}
但是得到的是8而不是7。我错过了什么
# 1 楼答案
从1到10的数字之和是10*(10+1)/2=55。缺少1和7,所以缺少的数字之和是8。我觉得不错
# 2 楼答案
你的最小值是
2
,所以应该是范围的开始IntStream.rangeClosed(2, 10)
你也可以直接在
IntStream
上调用.sum()
# 3 楼答案
你需要使用2而不是1
IntStream.rangeClosed(2, 10)
还可以使用
summaryStatistics()
在数组中查找最小和最大元素