179. Largest Number

一开始知道是PQ之类的,然后在怎么比较上难住了。。(怎么写PQ里的compare())

一位一位比较是可以的,但是特殊情况很难处理,比如如何比较121 12,和128 12.

然后看答案发现一刷用的办法是组合成AB或者BA比较,年轻时的我真是太机智了。。

最后就是0的处理,要处理leading 0s.

public class Solution 
{
    public String largestNumber(int[] nums) 
    {
        if(nums.length == 0) return "";
        
        
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>(new Comparator<Integer>() 
        {
           public int compare(Integer a, Integer b)
           {
               String s1 = Integer.toString(a);
               String s2 = Integer.toString(b);
               
               String A = s1+s2;
               String B = s2+s1;
               
               Long la = Long.valueOf(A);
               Long lb = Long.valueOf(B);
               
               if(la > lb) return -1;
               else if( la == lb) return 0;
               else return 1;
           }
        });
        
        for(int I0_0I: nums) pq.add(I0_0I);
        
        
        
        String res = new String();
        
        while(!pq.isEmpty() && pq.peek() == 0) pq.poll();
        
        if(pq.isEmpty()) return "0";
        
        
        
        while(!pq.isEmpty()) res+= pq.poll();
        
        return res;
    }
}

0 0||难过。。二刷居然卡住了

原文地址:https://www.cnblogs.com/reboot329/p/5877839.html