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

「最大数」问题知识点总结
一、题目核心要求
- 给定一组非负整数,不可拆分单个数字 ,重新排列顺序,拼接成一个最大的整数。
- 因结果可能极大,需返回字符串而非整数。
- 示例:
- 输入
[10,2]→ 输出"210"(因为"2"+"10" > "10"+"2") - 输入
[3,30,34,5,9]→ 输出"9534330"
- 输入
二、算法核心原理
1. 排序的本质
排序的核心是确定元素的先后顺序,即判断任意两个元素谁在前、谁在后能让整体结果更优。
2. 普通排序的局限性
普通升序/降序的比较逻辑(直接比较数字大小)不满足本题需求,因为其比较规则不具备传递性,会出现逻辑矛盾(如示例中直接比较数字大小无法得到正确顺序)。
3. 本题的排序优化思路
- 关键转换 :将所有数字转为字符串,通过拼接后的字典序比较来确定顺序。
- 排序规则 :对两个字符串
a和b,比较a + b和b + a的字典序:- 若
a + b > b + a→a放在b前面 - 若
a + b < b + a→b放在a前面
- 若
- 该规则满足传递性,可保证整体排序后拼接出最大数。
三、边界处理
- 若输入全为0(如
[0,0]),需输出"0"而非"00",避免无效前导零。
四、核心思想提炼
本题的核心是自定义排序规则,通过字符串拼接比较替代普通数字比较,从而得到全局最优的排列顺序。
、