三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

LeetCode 拼接最大数字题解

LeetCode 拼接最大数字题解

LeetCode 拼接最大数字题解

题目描述

给定一组非负整数,重新排列它们的顺序得到最大的数字。

示例

输入:nums = [10, 2]
输出:"210"

解题思路

方法:排序

思路

  • 将数字转换为字符串。
  • 比较两个字符串拼接后的结果来决定顺序。
  • 使用排序算法对数字进行排序。

复杂度分析

  • 时间复杂度:O(n log n)。
  • 空间复杂度:O(n)。

代码实现

def largest_number(nums): def compare(x, y): return int(y + x) - int(x + y) nums = sorted([str(num) for num in nums], cmp=compare) result = ''.join(nums) return result.lstrip('0') or '0' # 测试 def test_largest_number(): nums = [10, 2] print(largest_number(nums)) # 输出:"210" if __name__ == "__main__": test_largest_number()

总结

拼接最大数字是排序的典型应用,通过比较两个数字拼接后的结果来决定顺序。

← 返回列表