leetcode-179-最大数

Posted 唐僧洗澡不秃头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-179-最大数相关的知识,希望对你有一定的参考价值。

179. 最大数

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

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

示例 1:

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

示例 2:

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

示例 3:

输入:nums = [1]
输出:"1"

示例 4:

输入:nums = [10]
输出:"10"

提示:

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

题解思路:

通过将所有元素加入优先队列,然后重写compare方法,通过poll一个个导出,加到res里实现

class Solution 
    public String largestNumber(int[] nums) 
        int n = nums.length;
        String res="";
        //优先队列
        Queue<Integer> integerPriorityQueue = new PriorityQueue<>(n,idComparator);
        //所有元素加入优先队列
        for (int i = 0; i < n; i++) integerPriorityQueue.add(nums[i]);
        //说过第一个就是0说明所有元素都是0
        if(integerPriorityQueue.peek().equals(0)) return "0";
		//一个个导出
        for(int i=0;i<n;i++)  
            res+=integerPriorityQueue.poll();
        
        返回
        return res;

    
    //匿名Comparator实现
    public static Comparator<Integer> idComparator = new Comparator<Integer>()
        //重写compare方法
        @Override
        public int compare(Integer c1, Integer c2) 
            
          return (c2.toString()+c1.toString()).compareTo(c1.toString()+c2.toString());
            
        
    ;


以上是关于leetcode-179-最大数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 179. Largest Number (最大数)

leetcode 179. 最大数 解题报告

LeetCode 179. 最大数c++/java详细题解

[LeetCode] 179. Largest Number

Leetcode--179--Largest Number

leetcode179-Largest Number(把数组排成最大的数)