Sum of the Sequence 2, 22, 222,… in Java2025年5月7日 | 阅读7分钟 计算序列 2, 22, 222, 等的求和,需要理解数字中重复数字的规律。在 Java 中,可以通过迭代构建序列并对其值求和来完成此任务。这是一个练习编码中循环和数学运算的绝佳练习。 示例 输入:项数 = 4 序列 2, 22, 222, 2222 输出:总和 = 2468 解释 输出表示序列 2, 22, 222 和 2222 的总和。每个项依次相加:2 + 22 = 24,24 + 222 = 246,246 + 2222 = 2468。累加和演示了序列中重复数字的迭代相加。 方法 1:使用预定义数组迭代算法步骤 1:定义序列: 第一步是在程序中显式定义序列。由于序列是预定义的(2、22、222),可以将其存储在数组中。这个 数组 允许我们轻松访问每个项以进行处理。例如,可以声明数组为 int[] sequence = {2, 22, 222}。 步骤 1.1:识别序列中的模式: 该序列遵循特定模式,其中每个数字由重复一定次数的数字 2 组成。例如 第一个数字有一个 2,形成 2。 第二个数字有两个 2,形成 22。 第三个数字有三个 2,形成 222。 步骤 2:初始化 Sum 变量: 接下来,我们创建一个 变量 sum 来保存序列的累加总和。最初,此变量设置为 0,因为尚未添加任何值。当我们遍历序列的每一项时,它将进行迭代更新。 步骤 2.1:初始化 Sum 变量: 为了准备对序列求和,创建一个名为 sum 的变量,并将其初始值设置为 0。在迭代过程中添加序列中的每个项时,该变量将用作存储累加总和的容器。从 0 开始可确保没有先前的值会影响计算。 步骤 2. 2:验证 Sum 变量是否已正确初始化: 通过确保其初始值设置为 0。此步骤至关重要,因为在程序稍后添加序列项时,从不正确的值开始可能会导致不准确的结果。 步骤 3:迭代序列: 要计算总和,我们使用循环遍历序列的每个元素。循环遍历数组的长度。在每次迭代期间 序列的当前元素被添加到 sum 变量中。 当前项的值也可以显示为序列输出的一部分。 迭代确保每个项都对总和做出贡献,没有任何遗漏。 例如 第一次迭代时,2 被加到 sum 中,sum 变为 2。 第二次迭代时,22 被加到 sum 中,更新为 24。 第三次迭代时,222 被加到 sum 中,最终总和变为 246。 步骤 4:显示序列: 循环处理完每个项后,整个序列会以人类可读的格式打印出来,例如 2, 22, 222。这为用于求和的确切项提供了清晰性。 步骤 4. 1:格式化并显示序列: 通过迭代每个项并以清晰、易读的格式打印它们。使用逗号分隔各项,使序列在视觉上易于理解。这有助于用户在显示最终总和之前查看求和所涉及的数字。 步骤 5:输出最终总和: 计算完总和后,显示序列的总和。它包括以可读格式打印结果。例如,对于序列 2、22、222,输出将是 Sum = 246。此步骤可确保最终结果清晰地呈现给用户。 文件名:SequenceSum.java 输出 Sequence: 2, 22, 222 Sum of the sequence: 246 复杂度分析时间复杂度该程序的时间复杂度为 O(n),其中 n 是序列中的元素数量。这是因为循环恰好迭代一次以遍历数组的每个元素,在每次迭代中执行恒定时间的操作(加法和打印)。复杂度随序列大小呈线性增长。 空间复杂度该程序的空间复杂度为 O(n),其中 n 是预定义序列数组中的元素数量。数组占用与大小成比例的空间,而 sum 和循环计数器等其他变量使用恒定空间。因此,空间使用仅取决于序列的大小。 方法 2:迭代项构造算法步骤 1:定义项数: 首先决定序列中需要多少项(例如,2、22、222)。该值存储在名为 numberOfTerms 的变量中。例如,将项数设置为 5 以生成序列的前 5 项。 步骤 1. 1:识别序列中的模式: 观察序列中的模式。每个数字都由多次重复数字 2 形成。第一项是单个 2,第二项是 22(两个 2),第三项是 222(三个 2),依此类推。该模式有助于使用算术运算动态构造项。 步骤 2:初始化变量:创建两个变量 当前项: 用于构建重复数字的数字。从 0 开始,因为尚未生成任何项。 总和: 存储序列中所有项的累加总和。将其初始化为 0。 步骤 2. 1:验证变量的初始化: 确保 currentTerm 和 sum 变量已正确初始化。currentTerm 应从 0 开始,因为它将用于动态构建每个项。sum 也必须从 0 开始,以准确存储累加总和。正确的初始化对于防止在项构造和求和期间出错至关重要。 步骤 3:使用循环生成序列: 使用 for 循环生成和处理每个项。让循环从 1 运行到 numberOfTerms 构造当前项: 将 currentTerm 乘以 10 并加上 2。它将数字 2 追加到前一项。 例如 在第一次迭代中,currentTerm = 0 * 10 + 2 = 2。 在第二次迭代中,currentTerm = 2 * 10 + 2 = 22。 在第三次迭代中,currentTerm = 22 * 10 + 2 = 222。 加到总和中: 将生成的项添加到累加总和中。例如 第一项后,sum = 0 + 2 = 2。 第二项后,sum = 2 + 22 = 24。 第三项后,sum = 24 + 222 = 246。 步骤 3. 1:构造当前项: 在循环的每次迭代中,通过将前一个 currentTerm 乘以 10 并加上 2 来构造当前项。此操作将当前项的数字向左移动一位(通过乘以 10)并将数字 2 追加到右侧。例如,如果前一项是 22,则乘以 10 得到 220,加上 2 得到 222。它一步一步地构建每一项。 步骤 4:打印每一项: 在循环内,打印序列中的每一项。为了提高可读性,使用条件在最后一项之外的每个项后添加逗号。这可确保输出格式正确,各项之间用逗号分隔,但避免在最后一项后出现额外的逗号。 步骤 4. 1: 在循环内,首先打印序列的每一项。为确保格式正确,请检查当前项是否为最后一项。如果不是,则打印该项,后跟一个逗号。如果它是最后一项,则打印它而不带逗号以示清晰。 步骤 5:输出最终总和: 循环结束后,变量 sum 的最终值代表序列中所有项的累积总和。此总和是循环中每次迭代添加的每个值的总和,提供了完成序列处理后的总体结果。 文件名:SequenceSumDynamic.java 输出 Sequence: 2, 22, 222, 2222, 22222 Sum of the sequence: 24690 复杂度分析这种方法的时间复杂度为 O(n),其中 n 是序列中的项数。这是因为循环恰好迭代 n 次以生成每一项并将其添加到总和中。每个操作(乘法、加法)都以恒定时间执行。 该程序的空间复杂度为 O(1),因为它使用的内存量固定,与项的数量无关。currentTerm 和 sum 等变量需要恒定的空间,并且不使用额外的 数据结构(如数组或列表)来存储序列。 下一主题Java Callable 示例 |
在 Java 中,“finalisation”一词描述了对象在被垃圾回收之前所经历的清理过程。来自 java.lang.Object 类的 finalize() 函数使此过程更容易。子类应重写 finalize() 方法以释放资源...
5 分钟阅读
Buzz number 是 Java 中的另一个特殊数字,它以数字 7 结尾或可被 7 整除。与素数和阿姆斯特朗数不同,Buzz number 不太流行,并且面试官不常问。简单来说,如果一个数字可以被 7 整除….
阅读 3 分钟
给定 n 根标记为 1 到 n 的棍子,我们必须将它们排成一排,使得从左边可以看到正好 k 根棍子。当一根棍子比它前面的所有棍子都高时,它就是可见的。任务是计算有效… …
阅读 6 分钟
在数组中找到差值最小的数对是 Java 中一个常见的算法问题。它涉及比较数对之间的差异,以找出差值最小的数对,Java 提供了多种解决方案来解决这一挑战。示例 1:输入:A[] = {4, 7,...
7 分钟阅读
在 Java 中,归约(reduction)是一种终端操作,它将流聚合为一种类型或基本类型。Java 8 提供的 Stream API 包含一组预定义的归约操作,例如 average()、sum()、min()、max() 和 count()。这些操作通过组合元素来返回一个值…
5 分钟阅读
给定两个数组 A[] 和 B[],其中每个数组分别包含 N 和 M 个整数。我们的任务是找出配对 (A[i], B[j]) 的计数,这些配对确保它们的不同素数因子数量的乘积是偶数。示例 1:输入:int arr_A[] = {1, 7} int...
阅读 6 分钟
HashMap 和 ConcurrentHashMap 之间的区别 HashMap 是 Java 中一种强大的数据结构,用于存储键值对。它根据关联的键映射一个值。它允许我们存储 null 值和 null 键。它是 Java 集合中一个非同步类。而,...
阅读 4 分钟
混淆的词典含义是使某事物不清晰或难以理解。在编程中,混淆器用于保护源代码免受黑客攻击。在本节中,我们将学习什么是代码混淆,混淆器的作用,混淆工具,以及它的用途。此外,我们将学习如何...
阅读 6 分钟
Shunting-yard 算法是计算机科学中一种常用的算法,用于将中缀表达式转换为后缀或前缀表达式。在后缀表示法(也称为逆波兰表示法,RPN)中,运算符放在操作数之后,而在前缀表示法(也称为波兰表示法….
阅读 8 分钟
双生素数是相差2的两个素数。素数之间的差为2的素数被称为双生素数。双生素数一词用于一对双生素数。……
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India