贪心算法-最大数

题目: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",避免无效前导零。

四、核心思想提炼

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

相关推荐
智者知已应修善业16 小时前
【51单片机8位数码管同时倒计时从9999】2024-1-25
c++·经验分享·笔记·算法·51单片机
洛水水16 小时前
【力扣100题】86.柱状图中最大的矩形
算法·leetcode·职场和发展
渡之16 小时前
GRiM-Net 深度解析 | 无人机 GNSS 拒止场景下两阶段跨视角视觉定位框架
深度学习·算法·动态规划·无人机
测试仪器廖生1359025638517 小时前
罗德与施瓦茨 FSP13频谱分析仪FSP30
网络·人工智能·算法
happymaker062617 小时前
LeetCodeHot100——560.和为K的子数组
算法
dtq042417 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法
郭梧悠17 小时前
Hash算法入门Hash冲突解决方案
算法·哈希算法
洛水水18 小时前
【力扣100题】81.寻找两个正序数组的中位数
数据结构·算法·leetcode
happymaker062618 小时前
LeetCodeHot100——155.最小栈
算法
洛水水19 小时前
【力扣100题】85.每日温度
算法·leetcode·职场和发展