179. 最大数


179. 最大数

难度中等 477
给定一组非负整数 nums,重新排列它们每个数字的顺序(每个数字不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例 1:
输入nums = [10,2]
输出:"210"
示例  2:
输入nums = [3,30,34,5,9]
输出:"9534330"
示例 3:
输入**nums = [1]
**输出:
“1”

示例 4:
输入**nums = [10]
**输出:
“10”

class Solution {
    private class LargerNumberComparator implements Comparator<String> &#123;
        @Override
        public int compare(String a, String b) &#123;
            String order1 = a + b;
            String order2 = b + a;
           return order2.compareTo(order1);
        &#125;
    &#125;

    public String largestNumber(int[] nums) &#123;
        // Get input integers as strings.
        String[] asStrs = new String[nums.length];
        for (int i = 0; i < nums.length; i++) &#123;
            asStrs[i] = String.valueOf(nums[i]);//字符串比较
        &#125;

        // Sort strings according to custom comparator.
        Arrays.sort(asStrs, new LargerNumberComparator());

        // If, after being sorted, the largest number is `0`, the entire number
        // is zero.
        if (asStrs[0].equals("0")) &#123;
            return "0";
        &#125;

        // Build largest number from sorted array.
        String largestNumberStr = new String();
        for (String numAsStr : asStrs) &#123;
            largestNumberStr += numAsStr;//数字很大需返回字符串
        &#125;

        return largestNumberStr;
    &#125;
&#125;

文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
103. 二叉树的锯齿形层序遍历--🀄️ 103. 二叉树的锯齿形层序遍历--🀄️
103. 二叉树的锯齿形层序遍历难度中等 402给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],   
下一篇 
剑指 Offer 56 - I. 数组中数字出现的次数--🀄️ 剑指 Offer 56 - I. 数组中数字出现的次数--🀄️
剑指 Offer 56 - I. 数组中数字出现的次数难度中等 312一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度是 O(1)。 示例 1:输入:
  目录