Java 中的中心正方形数2025年3月17日 | 阅读 7 分钟 在本节中,我们将学习什么是中心正方形数,并创建 Java 程序 来检查给定的数字是否为中心正方形数。中心正方形数程序经常在 Java 编码面试和学术中出现。 中心正方形数中心正方形数是 图形数,它们是递归定义的: 因此, 对于 n = 1 Q(1) = Q(1 - 1) + 4 x (1 - 1) => Q(1) = Q(0) + 4 x 0 = 1 + 0 = 1 对于 n = 2 Q(2) = Q(2 - 1) + 4 x (2 - 1) => Q(2) = Q(1) + 4 x 1 = 1 + 4 = 5 对于 n = 3 Q(3) = Q(3 - 1) + 4 x (3 - 1) => Q(3) = Q(2) + 4 x 2 = 5 + 8 = 13 对于 n = 4 Q(4) = Q(4 - 1) + 4 x (4 - 1) => Q(4) = Q(3) + 4 x 3 = 13 + 12 = 25 对于 n = 5 Q(5) = Q(5 - 1) + 4 x (5 - 1) => Q(5) = Q(4) + 4 x 4 = 25 + 16 = 41 递归方法在这种方法中,我们将编写一个将调用自身(递归)来计算中心正方形数的方法。用于终止递归的基本情况是 Q(1) = 1。观察下面提到的实现。 文件名: CenteredSquareNumber.java 输出 The first 10 Centered Square Number are: 1 5 13 25 41 61 85 113 145 181 复杂度分析: 程序的时间复杂度为 O(d),其中 d 是必须找到的中心正方形数的 dth 位置。程序不消耗任何额外空间。因此,空间复杂度为 O(1)。 方法:使用迭代上述程序的空间复杂度可以进一步降低。我们将使用一个数组来存储先前计算的中心正方形的结果。因此,无需一遍又一遍地重新计算先前计算的解决方案。观察下面提到的实现。 文件名: CenteredSquareNumber1.java 输出 The first 10 Centered Square Number are: 1 5 13 25 41 61 85 113 145 181 复杂度分析: 程序的时间复杂度为 O(1)。程序使用数组来存储结果。因此,程序空间复杂度为 O(n),其中 n 是必须计算的中心正方形数的总数。 我们仍然可以在空间复杂度方面进行优化。如果我们观察上述递归公式,我们会发现第 n 个中心正方形数仅依赖于第 (n - 1) 个中心正方形数。因此,无需存储所有先前计算的中心正方形数。只需存储最后一个计算的中心正方形数即可完成工作。以下程序显示了相同的内容。 文件名: CenteredSquareNumber2.java 输出 The first 10 Centered Square Number are: 1 5 13 25 41 61 85 113 145 181 复杂度分析: 程序的时间复杂度为 O(1)。程序不使用数组来存储结果。因此,程序空间复杂度也为 O(1)。 方法:使用数学公式计算中心正方形数的数学公式是 Q(n) = n2 + (n - 1)2,其中 n >= 1 因此, 对于 n = 1 Q(1) = 12 + (1 - 1)2 => Q(1) = 1 + 02 = 1 + 0 = 1 对于 n = 2 Q(2) = 22 + (2 - 1)2 => Q(2) = 4 + 12 = 4 + 1 = 5 对于 n = 3 Q(3) = 32 + (3 - 1)2 => Q(3) = 9 + 22 = 9 + 4 = 13 对于 n = 4 Q(4) = 42 + (4 - 1)2 => Q(4) = 16 + 32 = 16 + 9 = 25 对于 n = 5 Q(5) = 52 + (5 - 1)2 => Q(5) = 25 + 42 = 25 + 16 = 41 上面提到的数学公式的实现非常直接。 文件名: CenteredSquareNumber3.java 输出 The first 10 Centered Square Number are: 1 5 13 25 41 61 85 113 145 181 复杂度分析: 该程序的时间复杂度和空间复杂度与前一个程序相同。 检查中心正方形数到目前为止,我们一直在计算中心正方形数。现在,我们将看看如何验证给定的数字是否为中心正方形数。 方法该方法是借助三角形数来计算中心正方形数,直到输入数字或大于输入数字(在本例中为 inputNum)。我们可以通过三角形数来做到这一点。观察以下步骤。 步骤 1:首先,我们需要计算三角形数。 步骤 2:然后,将计算出的三角形数乘以 4。 步骤 3:之后,将结果加 1。我们得到的数字是中心正方形数。 步骤 4:如果上一步中找到的计算数字与 inputNum 匹配,则 inputNum 是中心正方形数。否则,计算下一个更大的三角形数并从步骤 2 重复。如果计算出的中心数大于 inputNum,则意味着 inputNum 不是中心正方形数。 注意:三角形数 T(n) = (n x (n + 1)) / 2,其中 n >= 1 文件名: CenteredSquareNumber4.java 输出 4 is not a centered square number. 5 is a centered square number. 8 is not a centered square number. 13 is a centered square number. 15 is not a centered square number. 25 is a centered square number. 40 is not a centered square number. 41 is a centered square number. 复杂度分析:该程序的时间复杂度为 O(N),其中 N 是必须验证的中心正方形数的值。程序空间复杂度是常数,即 O(1)。 |
图像处理是数字媒体和内容管理部门的一个主要领域,其应用范围从简单的照片编辑到高级计算机视觉任务。图像处理中的一个典型应用是水印:将可识别的徽标、文本或图像叠加在...
7 分钟阅读
Java 是一种面向对象的编程语言。作为一种面向对象的编程语言,它所有的类和机制都围绕着对象。面向对象的一个概念是 Java 中的可变性和不可变性。Java 中的对象要么是可变的,要么是不可变的;这取决于对象如何被……
阅读 4 分钟
? 在面向对象编程中,基本概念之一是继承。在 Java 中,继承允许我们基于现有类创建新类,继承它们的属性和行为。类之间的关系通常被称为“is-a”关系。在本节中,我们将探讨……
5 分钟阅读
在编程世界中,数据操作是一项常见的任务,我们经常会遇到需要组合或合并两个包含相似键的映射的情况。Java 8 凭借其增强的功能和能力,为应对这些挑战提供了优雅的解决方案。在本...
阅读 3 分钟
字符串的回文分割意味着将给定字符串分成若干部分,使得从给定字符串形成的所有子字符串本身都是回文。在 Java 的回文分割问题中,我们返回使每个部分都成为回文所需的最小分割次数...
7 分钟阅读
在 Java 编程中,有许多记录系统对于正确存储和操作数据至关重要。其中一种事实形状是 ArrayList,它是一个动态数组,可以根据需要增长或缩小。在某些时候,我们可能会遇到条件...
阅读 4 分钟
在 Java 中,读写 Excel 文件有点棘手,因为 Excel 工作表有单元格来存储数据。Java 不提供直接读取或写入 Microsoft Excel 或 Word 文档的 API。我们必须依赖第三方库,该库...
阅读 3 分钟
问题陈述:找到最佳路线以绘制一条穿过砖墙的垂直线,使其与最少数量的砖相交,这是“最少可相交砖数”问题的基础。使用二维数字列表表示...
阅读 4 分钟
最近数问题是程序员面试中最受欢迎的问题之一,因为该问题的主要任务是在数组中查找一个与给定特定数字距离最近的数字。这个问题在许多计算...中都有实现。
阅读 4 分钟
旧的 java.Date 类实际上功能不丰富,Java 8 推出了新的日期-时间 API。util. Date 和 java. util. Calendar 类。之前的类不是不变的;它们不是为多线程设计的,并且具有复杂且容易出错的方法。早先...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India