企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 从 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 中问过。 在这个 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 ``` ## 查找数字的解决方案 – Java8 上面的代码虽然很简单,但是可以使用新语言功能(例如 [Java8](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)