Java 中查找 N 个二进制字符串中的第 K 位13 2025年5月 | 阅读 3 分钟 问题陈述给定两个整数 n 和 k。该问题生成一个序列,其中每个 Sn 是根据前一个字符串递归形成的。转换遵循以下模式
其中
由于字符串的指数级增长,任务是在不显式构建整个 字符串 的情况下找到 Sn 中的第 k 位。 示例 1 输入: n = 4, k = 11 输出 1 解释: S₄ = "011100110110001",第 11 位是 '1'。它映射到 S₃ 中的位置 5 并被反转。 示例 2 输入: n = 2, k = 3 输出 1 解释: S₂ = "0110",第 3 位是 '1'。由于 3 是中间位置,我们返回 '1'。 方法 1:递归模拟方法该方法递归地执行,而不显式构建整个字符串 Sn。它生成序列;我们根据转换的递归属性来确定 k 的位置。 算法步骤 1: 如果 n=1,返回 '0',因为 S1 = "0"。 步骤 2: Sn 的长度为 (2n−1)。 步骤 3: 中间位始终位于位置 (length/2) + 1 处,并且是 '1'。 步骤 4: 如果 k 在左半部分 (k < mid),它与 Sn−1 相同。 步骤 5: 如果 k 在右半部分 (k > mid),它映射到 Sn−1 中的 (length – k + 1) 位置,但被反转。 步骤 6: 求解新的映射索引。 让我们在 Java 程序中实现上述步骤。 输出 1 复杂度时间复杂度: 程序的 O(n)。这是因为每次递归调用都会将 n 减 1,导致最多进行 n 次递归调用。 空间复杂度: 程序的 O(n)。这是因为递归函数调用存储在调用栈中。 下一个主题null |
将偶数安排在偶数索引和奇数安排在奇数索引的过程需要将数组中的数字进行排列,以便偶数与偶数索引(0、2、4、...)对齐,奇数与奇数索引对齐...
阅读 19 分钟
应用程序质量对于软件系统的开发至关重要,尤其是大型系统。高质量的软件将降低软件维护成本,并增强潜在的软件重用性。为了更定量和客观地衡量软件质量,软件度量(MOOD)给出了印象...
5 分钟阅读
QuickSort 是一种高效的分治排序算法,它递归地将数组划分为较小的子数组。多线程允许在不同分区上并行执行排序,利用多个处理器核心来减少执行时间。它允许程序同时执行两个或多个部分以...
5 分钟阅读
在 Java 中,静态成员和非静态成员在它们如何存储、访问和在类中使用方面有所不同。Java 中的静态成员静态成员指的是类级别的变量或方法,这意味着它们属于类本身,而不是从中实例化的任何单个对象。它使得...
阅读 8 分钟
MD5 是一种加密算法,提供哈希函数以获得固定长度的 128 位(16 字节)哈希值。使用 Java,我们可以通过使用 `java.security` 包中定义的 `MessageDigest` 类在应用程序中实现 MD5 哈希。Java MessageDigest 类...
阅读 3 分钟
? 将米转换为公里是各种 Java 应用程序中的常见任务,尤其是在处理不同尺度的距离或测量值时。幸运的是,执行此转换非常简单,只需要几行代码。在本节中,我们将介绍转换过程...
阅读 3 分钟
? 在面向对象编程中,基本概念之一是继承。在 Java 中,继承允许我们基于现有类创建新类,继承它们的属性和行为。类之间的关系通常被称为“is-a”关系。在本节中,我们将探讨……
5 分钟阅读
在 Java 中,String 是一个使用广泛的类,它表示字符序列。Java 中的 String 是不可变的,这意味着一旦创建了 String 对象,它的值就不能被改变。要了解更多 Java String 任何修改都会导致创建新的 String 对象……
阅读 8 分钟
List 和 ArrayList 之间的区别 Java 集合提供了处理对象组的架构。集合表示对象的单个单元。它允许我们将对象组作为一个单元进行存储和操作。我们可以轻松地执行许多操作,例如...
5 分钟阅读
在本节中,我们将学习什么是“strobogrammatic numbers”,并创建 Java 程序来检查给定的数字是否为 strobogrammatic numbers。Strobogrammatic numbers 的 Java 程序经常出现在 Java 编码面试和学术中。Strobogrammatic numbers,一个有趣的数学……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India