LeetCode 题解 – 179. 最大数(leetcode 最大子数组)

LeetCode 题解 - 179. 最大数(leetcode 最大子数组)

力扣 179. 最大数点击查看题目

题目描述

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

示例 1:

LeetCode 题解 - 179. 最大数(leetcode 最大子数组)

示例 2:

LeetCode 题解 - 179. 最大数(leetcode 最大子数组)

说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

解决方案

自定义排序:

想法

为了构建最大数字,我们希望越高位的数字越大越好。

算法

首先,我们将每个整数变成字符串。然后进行排序。

如果仅按降序排序,有相同的开头数字的时候会出现问题。比方说,样例 2 按降序排序得到的数字是 95343303,然而交换 3 和 30 的位置可以得到正确答案 9534330。因此,每一对数在排序的比较过程中,我们比较两种连接顺序哪一种更好。我们可以证明这样的做法是正确的:

假设(不是一般性),某一对整数 a 和 b,我们的比较结果是 a 应该在 b 前面,这意味着 a ⌢ b > b ⌢ a,其中 ⌢ 表示连接。如果排序结果是错的,说明存在一个 c,b 在 c 前面且 c 在 a 的前面。这产生了矛盾,因为 a ⌢ b > b ⌢ a 和 b ⌢ c > c ⌢ b 意味着 a ⌢ c > c ⌢ a。换言之,我们的自定义比较方法保证了传递性,所以这样子排序是对的。

一旦数组排好了序,最“重要”的数字会在最前面。有一个需要注意的情况是如果数组只包含 0,我们直接返回结果 0 即可。否则,我们用排好序的数组形成一个字符串并返回。

Java 实现

LeetCode 题解 - 179. 最大数(leetcode 最大子数组)

Python 实现

LeetCode 题解 - 179. 最大数(leetcode 最大子数组)

复杂度分析

  • 时间复杂度:O(nlgn)

尽管我们在比较函数中做了一些额外的工作,但是这只是一个常数因子。所以总的时间复杂度是由排序决定的,在 Python 和 Java 中都是 O(nlgn)。

  • 空间复杂度:O(n)

这里,我们使用了 O(n) 的额外空间去保存 nums 的副本。尽管我们就地进行了一些额外的工作,但最后返回的数组需要 O(n) 的空间。因此,需要的额外空间与 nums 大小成线性关系。

本文作者:力扣

声明:本文归“力扣”版权所有,如需转载请联系。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至89291810@qq.com举报,一经查实,本站将立刻删除。
(0)
上一篇 2024年4月4日 上午9:51
下一篇 2024年4月4日 上午9:57

相关推荐

  • 网瘾少年拼音

    网瘾少年拼音为开头的中文文章: 网瘾少年,这个词组指的是那些过度沉迷于互联网的少年。这些少年往往表现出对互联网的依赖和沉迷,甚至到了影响日常生活的程度。 网瘾少年的危害非常大。他们…

    教育百科 2025年4月25日
  • 因病休学两个月可以复学吗(因病休学三个月可以退学费吗)

    因病休学三个月可以退学费吗? 近年来,随着健康问题的不断出现,许多学生因为疾病需要休学。对于这种情况,学校通常会提供学费的退还,但具体退还的时间和方式可能因学校而异。在本文中,我们…

    教育百科 2024年7月2日
  • 研究生休学一年,学制会延长吗?

    研究生休学一年,学制是否会延长? 近年来,随着研究生教育的不断发展,研究生休学现象也越来越普遍。有些研究生因为个人原因或者学术上的压力,会选择休学一年进行调整和休息。对于这种情况,…

    教育百科 2024年11月20日
  • 贵州初三厌学表现如何

    贵州初三学生厌学现象普遍 近年来,贵州初三学生厌学现象逐渐加剧,成为了一个备受关注的话题。随着社会的发展和教育水平的提高,学生们面临的压力越来越大,特别是在初三这个关键阶段,学生们…

    教育百科 2025年12月17日
  • 孩子玩手机好关于孩子玩手机

    孩子玩手机好? 随着科技的不断发展,智能手机已经成为人们生活中不可或缺的一部分。许多家长认为,孩子玩手机可以让他们变得更加聪明,有更多的时间学习,但事实却并非如此。在本文中,我们将…

    教育百科 2024年9月29日
  • 休学不停学(休学停学期间享受在校生教育吗)

    休学停学期间是否享受在校生教育,是一个值得讨论的问题。在某些情况下,休学或停学可能会对学生的教育生涯造成一定的影响,因为他们不能像正常学生一样在学校继续学习。然而,在某些情况下,休…

    教育百科 2024年6月11日
  • 孩子得了精神疾病休学了(神经症想休学)

    神经症是一种常见的心理障碍,患者常常感到焦虑,抑郁,紧张和疲劳。对于某些人来说,神经症可能会对他们的日常生活造成严重影响,因此他们可能会考虑休学一段时间来治疗自己的神经症。 如果一…

    教育百科 2024年7月7日
  • 职高休学留级

    职高休学留级:从失落到希望 对于一些职高学生来说,休学留级可能是他们所面临的最大挑战之一。在这个竞争激烈的社会中,职高学生的未来充满着不确定性和挑战,而休学留级则成为了他们缓解压力…

    教育百科 2024年8月5日
  • 八个字的励志班训简短霸气班训

    奋斗成就梦想,拼搏铸就辉煌 在学习和生活中,我们都需要一种强大的精神力量来支撑我们不断前进。而这种精神力量,八个字的励志班训简短霸气班训,则是我们前进路上最好的指引和激励。 奋斗成…

    教育百科 2025年1月11日
  • 网瘾双排

    网瘾双排:摆脱游戏成瘾的新方法 网瘾双排是指一种能够帮助人们摆脱游戏成瘾的方法。网瘾双排是一种通过训练来改变人们的行为和习惯的新方法。网瘾双排能够帮助人们控制自己的游戏时间,并提高…

    教育百科 2026年3月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注