最大数

最大数

CategoryDifficultyLikesDislikes
algorithmsMedium (40.98%)1185-

Tags

sort

Companies

Unknown

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例 1:

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

示例 2:

1
2
输入:nums = [3,30,34,5,9]
输出:"9534330"

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 109

Discussion | Solution

解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
 // @lc code=start
impl Solution {
    /// ## 解题思路
    pub fn largest_number(nums: Vec<i32>) -> String {
        let mut str_nums = nums.into_iter().map(|n| n.to_string()).collect::<Vec<_>>();
        str_nums.sort_by(|x, y| {
            let x1 = format!("{}{}", x, y);
            let x2 = format!("{}{}", y, x);
            x2.cmp(&x1)
        });
        if str_nums[0] == "0" {
            return "0".to_string();
        }
        str_nums.join("")
    }
}
// @lc code=end
updatedupdated2024-08-252024-08-25