Java 中算术级数中的缺失数字2024 年 9 月 26 日 | 阅读 7 分钟 这是一个非常有趣的问题,经常出现在 Google、Amazon、TCS、Accenture 等顶级 IT 公司的面试中。通过解决这个问题,面试官希望考察面试者的逻辑能力、批判性思维和解决问题的能力。因此,在本节中,我们将使用不同的方法和逻辑来在 Java 中找到等差数列中的缺失数字。此外,我们还将为此创建 Java 程序。 问题陈述给定一个数组。该数组包含一些表示等差数列的数字。在等差数列中,缺少一个数字。任务是找到这个缺失的数字。 示例 1 输入 int arr[] = {3, 5, 7, 9, 11, 15, 17, 19} 输出 13 解释:如果我们在输入数组中数字 11 之后插入数字 13,则等差数列就完整了。因此,答案是 13 示例 2 输入 int arr[] = {1, 7, 13, 19, 31, 37, 43} 输出 25 解释:如果我们在输入数组中数字 19 之后插入数字 25,则等差数列就完整了。因此,答案是 25。 示例 3 输入 int arr[] = {25, 18, 4, -3, -10, -17, -24} 输出 11 解释:如果我们在输入数组中数字 18 之后插入数字 11,则等差数列就完整了。因此,答案是 11。 问题解决方案使用等差数列公式一个等差数列的数字之和,其首项为 a1,末项为 an, 总项数为 n 时:Sn = (n x (a1 + an) ) / 2。因此,我们可以计算输入数组的和。这是因为我们知道输入数组的首项、末项和大小。如果我们参考示例 1,我们得到 S9 = (9 x (3 + 19)) / 2 = (9 x 22) / 2 = 198 / 2 = 99 (9 是包含缺失元素的输入数组的大小) 现在,遍历数组并找到现有元素的和。我们得到 元素之和:3 + 5 + 7 + 9 + 11 + 15 + 17 + 19 = 86 现在,用 S8 减去输入数组元素的和。我们得到 99 - 86 = 13,这是等差数列的缺失元素。以下程序实现了相同的概念。 文件名:MissingElementAP.java 输出 For the input array: 3 5 7 9 11 15 17 19 The missing element is: 13 For the input array: 1 7 13 19 31 37 43 The missing element is: 25 For the input array: 25 18 4 -3 -10 -17 -24 The missing element is: 11 复杂度分析:由于程序使用二分查找,因此程序的时间复杂度为 O(n),其中 n 是输入数组中存在的元素总数。程序不使用任何辅助空间。因此,程序的空间复杂度是常数,即 O(1)。 |
我们请求您订阅我们的新闻通讯以获取最新更新。