Java 中最大的数字至少是其他数字的两倍2025年5月12日 | 阅读 3 分钟 给定一个具有唯一值的整数 数组,其中包含最大的 整数。检查数组中最大的数字是否至少是其他所有数字的两倍。如果是,则返回最大元素的索引;如果不是,则返回 -1。 示例 1 输入 int arr = [10,5,2,1] 输出 0 解释 最大的整数是 10。它至少是数组中其他所有数字的两倍。我们返回零,因为 10 的索引是 0。 示例 2 输入 int arr = [8,3,1,0] 输出 0 解释 最大的整数是八,它至少是每个其他数字的两倍。我们返回零,因为 8 的索引是 0。 示例 3 输入 int arr = [0,0,3,2] 输出 -1 解释 由于三至少不是二的两倍,因此即使它是最大的整数,我们也返回 -1。 方法:朴素方法通过一次遍历,该代码有效地确定了数组中的最大数字,并确定它是否至少是每个其他数字的两倍(O(n) 时间复杂度)。为了确保尽可能少的比较,它使用两个变量跟踪最大和第二大项。逻辑保持简单,同时通过条件检查 maximum >= secondMax * 2 来保证正确性。通过避免不必要的排序和嵌套循环来提高性能。由于没有实现额外的数据结构,内存利用率保持不变(O(1) 空间复杂度)。由于其高效的架构,该程序可以处理大型数据集。 算法 步骤 1:将 MaxIndex、maximum 和 secondMax 设置为初始值。 步骤 2:迭代遍历数组。 步骤 2.1:如果当前元素大于 maximum,则将 secondMax 更新为 maximum。 步骤 2.1.1:将 maximum 更新为当前元素。 步骤 2.1.2:将 MaxIndex 更新为最近的索引。 步骤 2.2:另一方面,如果当前元素大于 secondMax。 步骤 2.2.1:将 secondMax 更新为当前元素。 步骤 3:检查条件:如果 maximum 大于或等于 second max 的两倍,则返回 MaxIndex;否则返回 -1。 实施输出 0 复杂度分析 上述算法的时间复杂度为 O(N),其中 'N' 表示元素数量,空间复杂度为 O(1)。 下一个主题Java 中的 BFS 算法 |
Java 中的构造函数是一段类似于方法的代码。它在创建类实例时被调用。调用构造函数时,会为对象分配内存。它是一种特殊的类型的方法,用于初始化...
阅读 6 分钟
事件是 Java 中最重要的概念之一。对象状态或行为因执行操作而发生的变化在 Java 中称为事件。操作包括按钮单击、按键、页面滚动或光标移动。Java 提供了一个 java.awt.event 包...
7 分钟阅读
在 Java 中,Vigesimal 是一种基数为 20 的数制。与十二进制数一样,我们可以使用预定义或用户定义的方法来查找二进制、八进制、十进制和十六进制数的等效 Vigesimal 数,或者查找等效的其他进制数的...
阅读 3 分钟
抽象语法树是一种表示计算机语言的抽象语法结构的树。树的每个节点都表示源代码中存在的构造。通常,AST 是编译器语法...的输出。
阅读 3 分钟
在 Java 中,final 是一个关键字。它是一个非访问修饰符。这意味着它限制了变量、方法和类的修改。它确保一旦将实体声明为 final,它就可以被赋值和定义一次。另一方面,引用...
7 分钟阅读
? 在 Java 中将对象序列化以便将其保存到文件、通过网络传输或存储在数据库中的过程称为序列化。然后可以使用此字节流重新创建原始对象,并具有所有...
5 分钟阅读
目标栈规划是一种流行的用于规划和问题解决任务的人工智能技术。它涉及将复杂的任务分解为一系列子目标和动作以实现这些目标。在本文中,我们将探讨目标栈规划的概念并实现...
阅读 12 分钟
Minecraft 是由 Mojang Studios 开发的一款沙盒视频游戏。它以 Java 编程语言编写。它由 Markus Persson 开发。2009 年 5 月,它发布于个人电脑。Minecraft Java 版支持 Windows、Linux 和 macOS 之间的跨平台游戏。它...
阅读 4 分钟
Java 中 replace() 和 replaceAll() 的区别 Java String 类提供了各种方法来操作字符串。replace() 和 replaceAll() 方法是其中之一,它们用于将一个字符串替换为指定的子字符串。正如两种方法名称听起来都一样……
阅读 3 分钟
Java 泛型是一个概念,可以在竞争性编程中有效地用于编写最优和可重用的代码。泛型使您能够声明类或接口,以及具有类型参数的方法,这些类型参数可以在之后在……期间用具体类型替换。
阅读 16 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India