Java 中的稀疏数10 Sept 2024 | 4 分钟阅读 在本教程中,我们将讨论Java 中的稀疏数。稀疏数是指其二进制表示中不包含两个或两个以上连续设置位(1)的数字。让我们通过一些例子来理解它。 示例 1 输入 int n = 12 输出:12 不是稀疏数。 解释:这是因为 12 的二进制表示是 1100,其中包含两个连续的设置位。 示例 2 输入 int n = 10 输出:10 是稀疏数。 解释:这是因为 10 的二进制表示是 1010,其中不包含两个连续的设置位。 示例 3 输入 int n = 0 输出:0 是稀疏数。 解释:这是因为 0 的二进制表示是 0,其中不包含两个连续的设置位。 示例 4 输入 int n = 1 输出:1 是稀疏数。 解释:这是因为 1 的二进制表示是 1,其中不包含两个连续的设置位。 使用 ArrayList 的方法我们可以将数字的二进制表示存储在 ArrayList 中,然后遍历该 ArrayList 来检查 ArrayList 中的两个连续元素是否包含 1。如果它们包含两个连续的 1,则该数字不是稀疏数;否则,它是一个稀疏数。请看以下程序。 文件名:SparseNumber.java 输出 The Spare numbers lying between 1 to 20 are: 1 2 4 5 8 9 10 16 17 18 20 复杂度分析:上述程序的 time complexity 为 O(D)。该程序的 space complexity 为 O(D),因为我们使用了大小为 D 的 ArrayList,其中 D 是数字 n 的二进制表示中存在的总位数。 程序的 time 和 space complexity 可以进一步降低。以下方法展示了相同的概念。 方法:使用右移运算符我们可以使用右移运算符来计算稀疏数。我们知道两个连续的位永远不能同时设置(为 1),我们将使用此属性来计算稀疏数。让我们通过一个例子来理解。 12 = 00001100(二进制表示),如果右移 1 位,我们得到 00000110,则 00001100 & 00000110 = 00000100,等于 4(大于零)。如果我们取一个其两个连续位未设置的数字,然后将其右移一位,则结果为零。 10 = 00001010(二进制表示),如果右移 1 位,我们得到 00000101,则 00001010 & 00000101 = 0。因此,我们看到,如果我们取一个连续位未设置的数字,然后对其与右移一位后的数字进行按位与 (&) 操作,我们将得到 0。 文件名:SparseNumber1.java 输出 The Spare numbers lying between 1 to 20 are: 1 2 4 5 8 9 10 16 17 18 20 复杂度分析:程序的 time 和 space complexity 都是常数,即 O(1)。 下一主题如何检查 JRE 版本 |
在本节中,我们将学习什么是 xylem(木质部)和 phloem(韧皮部)数,并创建 Java 程序来检查给定的数字是 xylem 还是 phloem。xylem 和 phloem 数的程序经常出现在 Java 编码测试和学术界。Xylem 和 Phloem 数 一个数字 N...
阅读 2 分钟
旧的 java.Date 类实际上功能不丰富,Java 8 推出了新的日期-时间 API。util. Date 和 java. util. Calendar 类。之前的类不是不变的;它们不是为多线程设计的,并且具有复杂且容易出错的方法。早先...
阅读 4 分钟
将类链接在一起是面向对象编程 (OOP) 的关键组成部分,它是一个相互连接的复杂网络。Java 引入了支撑这些交互的三个基本思想,Java 以其面向对象的原则而闻名:关联、聚合和组合。这些概念不仅作为...
阅读 8 分钟
Java 9 私有接口方法 在 Java 9 中,我们可以在接口中创建私有方法。接口允许我们声明私有方法,这些方法有助于在非抽象方法之间共享公共代码。在 Java 9 之前,在接口中创建私有方法会导致编译时错误。以下...
阅读1分钟
在本节中,我们将讨论如何使用 Java 中的字节数组反转字符串。以下是使用 Java 中的字节数组反转字符串的步骤。此方法的第一步是生成一个长度为……的临时字节数组
阅读 4 分钟
在 Java 中,final 类是不能被任何其他类扩展(继承)的类。换句话说,没有人可以创建 final 类的子类。我们可以使用 final 关键字将一个类声明为 final。final class Fruits { ...
阅读 6 分钟
? 方法在 Java 编程中至关重要,因为它们定义了对象的行为并包含可重用的代码。在某些情况下,即使大多数方法都与特定的类实例相关联,将方法指定为静态也是有意义的。在本文中,我们将探讨静态...
5 分钟阅读
在 Java 中,可以使用子类引用或超类引用来引用子类的对象。不同之处在于可以访问哪些方法或字段,以及程序的行为如何根据引用类型而改变。引用子类对象在...
5 分钟阅读
螺旋式遍历矩阵是指以圆形模式遍历元素,从左上角开始,沿着顶行向右移动。在每次行或列遍历之后,调整边界,并切换方向,持续进行,直到所有元素...
阅读 10 分钟
缓存是存储和从内存(缓存内存)访问数据的过程。缓存的主要特性是减少访问特定数据所需的时间。缓存旨在存储将来可能有用的数据。缓存的原因是访问...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India