Если ваши цифры начинаются с 1
, если на самом деле очень просто.
Сумма всех чисел вычисляется по формуле: x(x+1)/2
, то есть, если ваш список [1,2,3,4,5,6,7,8,9,10]
:
sum = 10 * 11 / 2 = 55;
Все, что вам нужно сделать, это добавить все свои номера и внести разницу (это также означает, что в вашем списке нет повторяющихся номеров):
List<Integer> listInteger = Arrays.asList(1, 2, 3, 4, 6, 7, 8, 9, 10);
int max = Collections.max(listInteger);
int sum = max * (max + 1) / 2;
int diff = sum - listInteger.stream().mapToInt(Integer::intValue).sum();
System.out.println(diff);
Учитывая хороший комментарий от Картика, это можно записать так:
List<Integer> listInteger = Arrays.asList(2, 3, 4, 6, 7, 8);
IntSummaryStatistics summaryStatistics =
listInteger.stream()
.collect(Collectors.summarizingInt(Integer::intValue));
int max = summaryStatistics.getMax();
int min = summaryStatistics.getMin();
int sum = (int) summaryStatistics.getSum();
System.out.println((max - min + 1) * (max + min) / 2 - sum);