Java 中的房屋编号17 Mar 2025 | 6 分钟阅读 在本节中,我们将学习Java 中的房屋编号。它是一个由边长为 s+1 的立方体组成的数字。在这个立方体上,我们有一个边长为 s 的方锥体数。下图描绘了一个房屋编号。 ![]() 通常,房屋编号 Hs 在数学上表示为 ![]() 实现:迭代让我们看看如何实现上述数学公式。 文件名: HouseNum.java 输出 The first 10 house numbers are: 1 9 32 78 155 271 434 652 933 1285 时间复杂度: 上面的程序使用循环来查找每个房屋编号的值。因此,该程序的 time complexity 为 O(n2),其中 n 是需要计算的总房屋编号数。 实现:递归也可以通过递归来查找房屋编号的值。请看下面的程序。 文件名: HouseNum1.java 输出 The first 10 house numbers are: 1 9 32 78 155 271 434 652 933 1285 时间复杂度: 上面的程序通过递归查找每个房屋编号的值。因此,该程序的 time complexity 为 O(n2),其中 n 是需要计算的总房屋编号数。 优化实现我们用于计算房屋编号值的上述两种方法的迭代或递归是导致时间复杂度增加的主要原因。因此,我们需要找到一种方法来消除迭代或递归。为此,让我们再次观察数学公式。 ![]() 之所以出现递归或迭代,是因为我们在第二部分进行了求和。如果我们仔细观察,我们会发现第二部分只是前 s 个自然数的平方之和。因此, ![]() 让我们实现上述计算数学公式。 文件名: HouseNume2.java 输出 The first 10 house numbers are: 1 9 32 78 155 271 434 652 933 1285 时间复杂度: 上面的程序没有使用任何递归或迭代来查找每个房屋编号的值。因此,该程序的 time complexity 为 O(n),其中 n 是需要计算的总房屋编号数。 数学公式仍然有第一部分 ([s + 1]3) 和第二部分 ([s * ( s + 1) * (2 * s + 1)] / 6)。然而,我们可以解方程 A 来组合所有这些部分。 因此, Hs = (s + 1)3 + ((s * (s + 1) * (2s + 1)) / 6 ............. (方程 A) Hs = (s + 1)3 + ((s * (s + 1) * (2s + 1)) / 6 Hs = (s + 1) [(s + 1)2 + (s * (2s + 1)) / 6] Hs = (s + 1) [ s2 + 2s + 1 + ((s2 + s) * (2s + 1)) / 6] Hs = (s + 1) [s2 + 2s + 1 + (2s2 + s) / 6] Hs = (s + 1) [6s2 + 12s + 6 + 2s2 + s] / 6 Hs = (s + 1) [8s2 + 13s + 6] / 6 = (8s3 + 13s2 + 6s + 8s2 + 13s + 6) / 6 Hs = (8s3 + 21s2 + 19s + 6) / 6 ............. (方程 B) 在方程 B 中,所有项都已合并,该方程也可用于查找房屋编号。以下程序说明了这一点。 文件名: HouseNume3.java 输出 The first 10 house numbers are: 1 9 32 78 155 271 434 652 933 1285 时间复杂度: 该程序的 time complexity 仍然是 O(n),因为程序没有使用任何递归或迭代来查找每个房屋编号的值。n 是需要计算的总房屋编号数。 下一主题Java 程序生成二进制数 |
java.nio.DoubleBuffer 具有 duplicate() 方法。DoubleBuffer 类用于创建一个新的浮点缓冲区,该缓冲区共享给定缓冲区的 contents。缓冲区的 contents 将构成新缓冲区。新缓冲区将反映对此缓冲区 contents 所做的更改...
阅读 3 分钟
在 Java 中,递增和递减运算符是一元运算符。它们分别用于将变量的值增加或减少 1。递增运算符由一对加号(++)表示,递减运算符由...
阅读 6 分钟
一维 (1D) 数组是一种线性数据结构,它将相同数据类型的元素存储在连续的内存位置中。基本术语 数组元素:数组的项称为其元素,它们存储在数组中,并且可以通过...随机访问。
7 分钟阅读
在 Java 中,字面量是源代码中表示固定值的符号。在词法分析中,给定类型的字面量通常称为标记。在本节中,我们将讨论 Java 中的字面量一词。Java 中的字面量是常量值...
阅读 6 分钟
Permutation Java 要确定序列元素的字典序排列,请应用排列方法。它指的是按字典序将数组的项重新排列为下一个更大的排列。重新排列项以产生字典序排列是基础...
阅读 6 分钟
在 Java 中,使用预定义方法可以非常轻松地找到数字的平方根。Java Math 类提供了 sqrt() 方法来查找数字的平方根。在本节中,我们将创建一个 Java 程序来查找...
阅读 3 分钟
这是技术面试中常问的一个问题。在这个问题中,给出了一个整数数组,表示不同日期的股票成本。请注意,一个人可以随时买卖股票。在本节中,...
7 分钟阅读
在本节中,我们将学习如何创建一个 Java 程序来查找三个数字中的最小者。除此之外,我们还将学习如何使用三元运算符在 Java 中查找三个数字中的最小者。使用三元运算符 在进入程序之前……
阅读 3 分钟
在 Java 中,算术运算符用于执行基本的数学运算。它们主要与 int、float、double 和 long 等数值原始类型一起使用。Java 提供以下五种算术运算符:加减乘除取模运算符符号运算符名称描述示例+加法运算符将两个操作数相加 a+b-减法运算符从第一个操作数中减去第二个操作数 a-b*乘法...
5 分钟阅读
这个谜题包含其他 8 个谜题的答案。玩家会得到一个 3x3 的棋盘,上面有 8 个棋子(每个棋子都标有 1 到 8 的数字)以及一个空格。要使棋子上的数字匹配...
阅读 13 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India