Java 中从给定数组构建最大数字2024 年 9 月 10 日 | 阅读 3 分钟 这个问题是顶尖 IT 公司(如 Google、Facebook、Amazon 和 Microsoft)在编码阶段面试中最常问到的著名问题。在本节中,我们将创建 Java 程序(使用不同的逻辑)来从给定数组中构造最大数。 示例输入 {10, 68, 75, 7, 21, 12} 输出 77568211210 从上面给出的数组,我们可以构造出可能的最大数 77568211210。请注意,数字的附加顺序无关紧要。 注意:数组中不应包含负数。问题的解决方案简单地将数组按降序排序,然后将该排序顺序视为所需结果是不可行的,因为这可能不是最大的数字。 首先,我们将为排序例程创建一个自定义比较器函数,该函数将比较两种配对比较(即 XY 和 YX),并且较大的数字将首先出现在排序顺序中。请注意,这里我们不需要单独比较 X 和 Y。 Java 程序:从给定数组构造最大数LargestNumber.java 输出 The largest number is: 908775854342160 上述程序的复杂度为O(nlogn)。其中 n 是输入大小。 让我们看看相同的另一个逻辑。 在下面的 Java 程序中,我们将每个数组元素转换为字符串。因为在将每个数字附加在一起后,我们会得到一个很大的数字,所以如果数组包含更多数字,最好将数字转换为字符串。之后,我们对数组进行了排序(降序)。将数组按降序排序可能会导致问题,即一组具有相同前导数字的数字。 例如,考虑一个数组{3, 30, 34, 5, 9}。 当我们将上述数组按降序排序时,它构造出的最大数为 9534303。但这并不是正确的答案。通过转置 33 和 3030 可以获得正确的答案。 因此,在执行排序时,请比较(对于每个配对比较)将该对按两种顺序连接而成的数字。数组排序后,我们将得到所需的最大数字。 可能存在数组包含零的情况。在这种情况下,如果最高有效数字是 00,则返回 00。否则,返回排序后的数组作为最大数字。 让我们在 Java 程序中实现上述逻辑。 LargestNumber.java 输出 The constructed largest number is:908775854342160 对于上述解决方案,时间复杂度为O(nlogn),空间复杂度为O(n),因为我们使用了额外的空间来存储数字。 下一主题Java SHA |
在本节中,我们将解决一个问题,我们需要计算二维矩阵中的“X”形状。矩阵中的字母可以是“X”或“O”,其中“X”代表形状的一部分,“O”代表空格。目标是...
阅读 6 分钟
构造函数重载 在 Java 中,我们可以像方法一样重载构造函数。构造函数重载可以定义为拥有多个具有不同参数的构造函数,以便每个构造函数都可以执行不同的任务。要了解更多关于 Java 中的构造函数重载的信息,请参阅构造函数重载的特点 相同的……
7 分钟阅读
在编程语言的世界里,Java 是最流行和通用的选择之一。Java 的一个关键特性是其可移植性,允许开发人员编写一次代码,并在任何地方运行。这种可移植性……
阅读 4 分钟
简介:程序员经常遇到必须确定给定字符串是否包含 0 到 9 所有数字的情况。这在各种情况下都很有用,包括输入验证、数据验证和密码验证。问题陈述:编写一个 Java 程序,检查给定的字符串是否...
阅读 6 分钟
? 在 Java 中,主要有三个与 String 相关的类。这些类是 String、StringBuilder 和 StringBuffer 类。这三个类提供了与字符串操作相关的方法。删除字符串的第一个和最后一个字符也是我们可以执行的操作...
阅读 6 分钟
在本节中,我们将学习什么是史密斯数,并创建 Java 程序来检查给定数字是否为史密斯数。史密斯数程序经常在 Java 编码测试和学术界出现。史密斯数一个史密斯数是一个复合数,其...
阅读 4 分钟
回文链表是指其元素序列正读反读都相同的链表。要确定链表是否为回文,我们需要将链表的前半部分与反转的后半部分进行比较,同时……
阅读 12 分钟
在许多编程场景中,我们面临着如何找到从一个位置 X 到另一个位置 Y 所需跳数的挑战。这种问题经常出现在算法问题中,通常通过应用方法来解决...
5 分钟阅读
序列化是将数据结构(如二叉树)转换为可以存储或传输然后稍后重新构造的格式的过程。反序列化是相反的过程,其中序列化格式被转换回原始数据结构。对于二叉树,...
阅读 15 分钟
绳索的最小成本是计算机科学和竞争性编程中的一个经典问题。它基于合并绳索以最小化总成本的概念。想象一下,你有几根不同长度的绳索,需要将它们合并成一根...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India