Java 中的直线数2024 年 9 月 10 日 | 阅读 7 分钟 如果一个数字 n 的各位数字构成一个等差数列,则称该数字为直线数。很明显,要判断各位数字是否构成等差数列,至少需要三位数字。因此,直线数应始终包含至少三位数字,且不包含前导零。 示例 1 输入: N = 178 输出: 否,178 不是直线数。 解释: 数字 178 的各位数字是 1、7、8。7 - 1 = 6,8 - 7 = 1。因此,公差不相同,各位数字不构成等差数列。因此,178 不是直线数。 示例 2 输入: N = 111 输出: 是,111 是直线数。 解释: 数字 111 的各位数字是 1、1、1。1 - 1 = 0,1 - 1 = 0。因此,公差相同,各位数字构成等差数列。因此,111 是直线数。 示例 3 输入: N = 25 输出: 否,25 不是直线数。 解释: 数字 25 的各位数字是 2 和 5。两位数字不足以判断它们是否构成等差数列。因此,25 不是直线数。 朴素方法方法很简单。首先,我们将数字的所有各位数字存储在一个数组中。然后,使用循环,我们可以从左到右或从右到左迭代,找到两个相邻元素之间的差值。如果所有两个相邻元素之间的差值都相同,那么我们可以说该数字是直线数;否则,它就不是。 文件名: StraightLineNumbersNaive.java 输出 No, 178 is not a Straight Line number. Yes, 111 is a Straight Line number. No, 25 is not a Straight Line number. 复杂度分析: 程序中使用的循环会一直迭代直到探索完数字的所有各位数字。因此,程序的时间复杂度为 O(d)。程序还将数字存储在 ArrayList 中,因此程序空间复杂度为 O(d),其中 d 是输入数字中存在的总位数。 方法:使用字符串在此方法中,我们首先需要将数字转换为字符串。然后,我们可以迭代字符以查找它们是否构成等差数列,并据此决定它们是否是直线数。以下程序对此进行了说明。 文件名: StraightLineNumbersStr.java 输出 No, 178 is not a Straight Line number. Yes, 111 is a Straight Line number. No, 25 is not a Straight Line number. 复杂度分析:程序的 time complexity 和 space complexity 与上一个程序相同。 我们可以避免使用字符串和 ArrayList 来降低空间复杂度。以下对此进行了说明。 文件名: StraightLineNumbersOptimized.java 输出 No, 178 is not a Straight Line number. Yes, 111 is a Straight Line number. No, 25 is not a Straight Line number. 复杂度分析:程序的 time complexity 和 space complexity 与上一个程序相同。 输出 No, 178 is not a Straight Line number. Yes, 111 is a Straight Line number. No, 25 is not a Straight Line number. 复杂度分析: 程序的时间复杂度为 O(d),其中 d 是数字中的总位数。程序空间复杂度为 O(1)。 查找范围内的直线数在本节中,我们将介绍如何过滤范围内的直线数。 文件名: StraightLineNumbersRange.java 输出 Straight Line Numbers from range 100 and 1000 are: 111 123 135 147 159 210 222 234 246 258 321 333 345 357 369 420 432 444 456 468 531 543 555 567 579 630 642 654 666 678 741 753 765 777 789 840 852 864 876 888 951 963 975 987 999 |
Java 是最流行的面向对象编程语言,但它也有一些缺点。主要缺点是编写大量样板代码。为了克服这个缺点,Lombok 项目应运而生。它是一种可以为我们的 Java 应用程序增添色彩的工具。在本节中,...
阅读 13 分钟
在 Java 中查找具有不同元素的数组的交集涉及识别两个或多个数组共有的公共元素。由于每个数组中的元素都是唯一的,因此任务简化为有效地比较集合。此过程在数据过滤、集合...等各种应用程序中很有用。
阅读 8 分钟
汉明码是一种计算机网络中的特殊代码,它是一组纠错码。在计算机图形学中,它主要用于检测和纠正数据从发送方到接收方传输过程中发生的错误。在 Java 中,我们可以实现...
阅读 6 分钟
ArrayList 类似于大小可变的数组。ArrayList 类位于 Java.util 包中,并扩展了 List 接口。通过使用其内置的 add() 和 remove() 方法,可以非常轻松地向 ArrayList 中添加和删除元素。然而,there...
阅读 4 分钟
在 Java 编程中,方法签名是指方法的唯一标识符。它包括方法名称及其参数列表。签名有助于区分一个方法与另一个方法,并允许 Java 编译器将方法调用与其对应的定义进行匹配....
阅读 3 分钟
在不同严峻的环境中编码时,许多人可能都遇到过 NZEC 错误。NZEC(非零退出码)顾名思义,当您的代码未能返回 0 时发生。当代码返回 0 时,表示它已成功执行。任何其他...
5 分钟阅读
计算机编程中用于按特定顺序组织元素集合的基本数据结构包括队列和堆栈。即使它们通常单独使用,但使用两个堆栈来创建队列是可行的。本文将探讨不同的操作,这些操作...
阅读 4 分钟
向后兼容性是指系统、产品或技术与早期版本协同工作的能力,或集成为早期版本创建的旧系统或输入的 alojamento。当对系统的修改破坏了这种兼容性时,就会导致所谓的“重大更改”。在...
阅读 6 分钟
?借助 Java 的动态 SQL 查询,我们可以即时创建和执行 SQL 语句,为数据库交互提供灵活性和适应性。在本节中,我们将讨论在 Java 中编写动态 SQL 查询的过程,包括全面的代码示例……
5 分钟阅读
工程师可以轻松地为他人创建一个网站,并激励他们开始创业。事实上,如果你没有选择正确的支付网关服务,有效地运营一家初创公司可能会很麻烦。正确的支付网关服务...
阅读 12 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India