最大数问题(自定义排序)

目录

•写在前面

•题目

•解法


•写在前面

最大数问题,不是选中最大的那个数,而是组合成最大的那个数,不是说这个问题有多难,而是说提供了一种很棒的思路,就是自定义排序,我觉得很值得收录,因为使用这种思路可以解决很多问题。话不多说,直接上题。

•题目

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。

示例 1:

输入: [10,2]
输出: 210
示例 2:

输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。

•解法

自定义排序规则,其实思路也没什么好讲的,直接看代码吧!思路很经典。

    public static String largestNumberS1(int[] nums) {
        int length = nums.length;
        Integer[] numVote = new Integer[length];
        for (int i = 0; i < length; i++) {
            numVote[i] = nums[i];
        }
        Arrays.sort(numVote, new Comparator<Integer>() {
            @Override
            public int compare(Integer n1, Integer n2) {
                String temp1 = n1 + "" + n2;
                String temp2 = n2 + "" + n1;
                //如果参数是一个按字典顺序排列等于该字符串的字符串,则返回值为0; 
                //如果参数是按字典顺序大于此字符串的字符串,则返回值小于0; 
                //如果参数是按字典顺序小于此字符串的字符串,则返回值大于0。
                return temp2.compareTo(temp1);
            }
        });
        String result = "";
        for (int i = 0; i < length; i++) {
            result = result +numVote[i];
        }
        if(result.charAt(0) == '0') return "0";
        else return result;
    }
            
发布了78 篇原创文章 · 获赞 440 · 访问量 73万+

猜你喜欢

转载自blog.csdn.net/DBC_121/article/details/103449021