# 从 Java 中的序列/数组中查找缺失的数字 > 原文: [https://howtodoinjava.com/puzzles/find-missing-number-from-series/](https://howtodoinjava.com/puzzles/find-missing-number-from-series/) 在 [Java 访谈](https://howtodoinjava.com/java-interview-questions/)上,一个常见的难题是 – 从一系列数字或数组中找到缺失的数字。 这个难题已经在 Amazon.com 中问过。 在这个 Java 难题中,您有一系列数字开头(例如 1….N),而该系列中恰好缺少一个数字。 您必须编写一个 **Java 程序来查找**系列中的缺失数字。 ## 查找电话号码的解决方案 出乎意料的是,仅当您已经知道该难题的解决方案时,它才非常简单。 1. 计算`A = n (n+1)/2`,其中 n 是序列 1…N 中的最大数。 2. 计算 B =给定序列中所有数字的总和 3. 缺少号码= A – B 让我们用代码编写解决方案。 ```java public class FindMissingNumber { public static void main(String[] args) { //10 is missing int[] numbers = {1,2,3,4,5,6,7,8,9, 11,12}; int N = 12; int idealSum = (N * (N + 1)) / 2; int sum = calculateSum(numbers); int missingNumber = idealSum - sum; System.out.println(missingNumber); } private static int calculateSum(int[] numbers) { int sum = 0; for (int n : numbers) { sum += n; } return sum; } } Output: 10 ``` ## 查找电话号码的解决方案 – Java 8 上面的代码虽然很简单,但是可以使用新语言功能(例如 [Java 8](https://howtodoinjava.com/java-8-tutorial/) 中的 [lambda](https://howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/) )减少许多行。 让我们看看如何? ```java import java.util.Arrays; public class FindMissingNumber { public static void main(String[] args) { //10 is missing int[] numbers = {1,2,3,4,5,6,7,8,9, 11,12}; int N = 12; int idealSum = (N * (N + 1)) / 2; int sum = Arrays.stream(numbers).sum(); int missingNumber = idealSum - sum; System.out.println(missingNumber); } } Output: 10 ``` 这样的难题很容易解决,但是在任何面试中问清楚解决方案总是很有用的。 因此,准备在下一次面试中找到数组中缺少的数字。 学习愉快! 参考: [SO 线程](https://stackoverflow.com/questions/2113795/quickest-way-to-find-missing-number-in-an-array-of-numbers)