Java 中查找标记索引的最大数量2025 年 5 月 12 日 | 阅读 4 分钟 问题陈述给定一个 数组 nums。问题是找到最大的索引集,使得对于每个选定的索引 i,都存在另一个选定的索引 j,满足 A[i] ≤ 2 × A[j]。任务是找出最大可能的标记索引数。 示例 1 输入: nums = {3, 5, 2, 8, 10} 输出: 最大标记索引数: 4 解释: 排序后: {2, 3, 5, 8, 10}。有效对是 (2,8) 和 (3,10),因此标记了 4 个索引。 示例 2 输入: nums = {10, 20, 30, 40, 50, 60} 输出: 最大标记索引数: 6 解释: 排序后的数组: {10, 20, 30, 40, 50, 60}。有效对是 (10,30)、(20,40) 和 (30,60),标记了所有 6 个索引。 排序和双指针方法该方法使用排序和双指针技术来查找给定数组中最大标记索引数。 算法步骤 1: 将数组按升序排序。 步骤 2: 初始化两个指针
步骤 3: 尝试通过检查 nums[left] * 2 <= nums[right] 来形成有效对
步骤 4: 重复此过程,直到其中一个指针耗尽。 步骤 5: 返回标记索引的总数。 让我们在 Java 程序中实现上述方法。 输出 Maximum Marked Indices: 4 时间复杂度: 程序的 O(n log n),其中 n 是数组的大小。这是因为排序和数组的遍历。 空间复杂度: 程序的 O(1)。这是因为原地排序,没有使用额外空间。 二分查找结合贪心方法该方法用于查找最大标记索引数。其思想是搜索满足条件 A[i] ≤ 2 × A[j] 的最大对数。 算法步骤 1: 对数组进行排序,以确保元素按非递减顺序排列。 步骤 2: 对可能的标记对数 (mid) 使用二分查找。 步骤 3: 在 canMark() 中检查是否可以用贪心策略标记 mid 对
步骤 4: 如果可以标记 mid 对,则搜索更多对 (left = mid + 1);否则,减小搜索空间 (right = mid - 1)。 步骤 5: 返回 maxMarked,它存储找到的最大有效索引。 让我们在 Java 程序中实现上述方法。 输出 Maximum Marked Indices: 4 时间复杂度: 程序的 O(n log n),其中 n 是数组的大小。这是因为排序和二分查找。 空间复杂度: 程序的 O(1)。这是因为我们对数组进行原地修改,并且不使用额外空间。 下一主题Java 关键字 |
Java 是使用最广泛的编程语言之一,遵循面向对象原则,并以其健壮性和可移植性而闻名。在该语言中,纯函数概念在函数式编程中起着举足轻重的作用,它提供了一种编写可靠且可预测的代码的结构化方法。在...
阅读 4 分钟
JSON 代表 JavaScript 对象表示法,它是一种轻量级的数据存储和传输格式。它以键值对的形式存储数据。大多数应用程序使用此格式在服务器和网页之间传输数据,反之亦然。但是,...
阅读 6 分钟
Java 是一种强大的编程语言,可用于创建各种桌面、Web 和移动应用程序。List 接口是 Java 的核心数据结构之一。列表是一组按特定顺序排列的元素,并且...
阅读 4 分钟
在计算生物学中,经常需要找到 DNA 序列中的全局最小核苷酸,以及给定范围内的全局最小核苷酸。DNA 序列由四种核苷酸组成。由字母表示的四种碱基是腺嘌呤 (A)、胞嘧啶 (C)、鸟嘌呤...
阅读 6 分钟
Java DecimalFormat 类的 getPositivePrefix() 方法用于检索此 DecimalFormat 实例的正前缀值。语法:public String getPositivePrefix() 参数:此方法不接受任何参数。返回值:此方法返回此 DecimalFormat 对象的正前缀值。示例 1:数字的格式化选项...
阅读 2 分钟
垃圾回收算法,例如标记-清除,在 C++ 和 Java 等编程语言中在后台运行以管理内存。当动态创建对象时,它们会在堆中占用内存。但是,如果我们不断创建对象而不释放内存,这可能导致...
阅读 4 分钟
错误是在程序执行时出现的,问题、bug 或人为错误。异常会中断程序的流程并异常终止程序。不建议异常终止程序,因此我们需要...
阅读 6 分钟
螺旋式遍历矩阵是指以圆形模式遍历元素,从左上角开始,沿着顶行向右移动。在每次行或列遍历之后,调整边界,并切换方向,持续进行,直到所有元素...
阅读 10 分钟
Java 8 中首次发布的 Stream API 可用于处理对象集合。流是项目的集合,可以通过各种方式进行管道化以获得不同的结果。Java Stream 的特点是:作为接收输入的替代...
阅读 8 分钟
异或(XOR)运算,也称为逻辑异或运算,是一种编程中常用的逻辑运算。当且仅当只有一个操作数为真时,它返回真。在 Java 中,XOR 运算可以应用于集合,使我们能够执行...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India