贪心算法-最大数

题目:https://leetcode.cn/problems/largest-number/description/

「最大数」问题知识点总结


一、题目核心要求

  • 给定一组非负整数,不可拆分单个数字 ,重新排列顺序,拼接成一个最大的整数
  • 因结果可能极大,需返回字符串而非整数。
  • 示例:
    • 输入 [10,2] → 输出 "210"(因为 "2"+"10" > "10"+"2"
    • 输入 [3,30,34,5,9] → 输出 "9534330"

二、算法核心原理

1. 排序的本质

排序的核心是确定元素的先后顺序,即判断任意两个元素谁在前、谁在后能让整体结果更优。

2. 普通排序的局限性

普通升序/降序的比较逻辑(直接比较数字大小)不满足本题需求,因为其比较规则不具备传递性,会出现逻辑矛盾(如示例中直接比较数字大小无法得到正确顺序)。

3. 本题的排序优化思路
  • 关键转换 :将所有数字转为字符串,通过拼接后的字典序比较来确定顺序。
  • 排序规则 :对两个字符串 ab,比较 a + bb + a 的字典序:
    • a + b > b + aa 放在 b 前面
    • a + b < b + ab 放在 a 前面
  • 该规则满足传递性,可保证整体排序后拼接出最大数。

三、边界处理

  • 若输入全为0(如 [0,0]),需输出 "0" 而非 "00",避免无效前导零。

四、核心思想提炼

本题的核心是自定义排序规则,通过字符串拼接比较替代普通数字比较,从而得到全局最优的排列顺序。

相关推荐
没落之王10 分钟前
易学使者郑氏正脉郑冰推演马航事件
大数据·人工智能·算法·机器学习·可用性测试
阿部多瑞 ABU29 分钟前
告别手工核图:基于 .NET + MuPDFCore 的 CAD 等轴测 PDF 材料表提取与新旧版本对比实战
后端·算法·ui·pdf·c#
郝学胜-神的一滴33 分钟前
并查集深度入门:从玄学抽象到 QuickFind & QuickUnion 源码实战
数据结构·c++·python·程序人生·算法·软件开发
比奇堡裤头村34 分钟前
统计学习方法——决策树
算法·决策树·学习方法
灵晔君1 小时前
【Linux】进程控制(一)——进程创建、进程终止与进程等待
linux·c语言·算法
数模竞赛Paid answer10 小时前
2026年中青杯数学建模A题数学建模论文智能评估系统与多智能体优化方法求解全过程论文及程序
算法·数学建模·中青杯
银-豆豆10 小时前
数据结构与算法-动态规划、回溯与贪心
算法·动态规划
想吃火锅100512 小时前
【leetcode】200. 岛屿数量
算法·leetcode·职场和发展
Nil20812 小时前
leetcode 54螺旋矩阵
算法·leetcode·矩阵
依然鸣13 小时前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论