LeetCode 剑指 Offer 45. 把数组排成最小的数

题目描述

🔥 剑指 Offer 45. 把数组排成最小的数

给定一个非负整数数组 nums,我们想将它们排成一个数值最小的整数。请注意,数组中的数字可以是多位数的。


示例 1: 输入:nums = [10, 2] 输出:102


示例 2: 输入:nums = [3, 30, 34, 5, 9] 输出:3033459


提示:

  • 0 <= nums.length <= 100
  • 0 <= nums[i] <= 10^9

image-20241107211521456

思路分析

思路描述

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func minNumber(nums []int) string {
	strs := make([]string, len(nums))
	for i, num := range nums {
		strs[i] = strconv.Itoa(num)
	}

	sort.Slice(strs, func(i, j int) bool {
		return strings.Compare(strs[i]+strs[j], strs[j]+strs[i]) < 0
	})

	res := strings.Join(strs, "")

	if res[0] == '0' {
		return "0"
	}
	return res
}
1
write your code here

🍏 点击查看 Java 题解

1
write your code here

相似题目

本文作者:
本文链接: https://hgnulb.github.io/blog/2024/45710356
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!