zoukankan      html  css  js  c++  java
  • 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||难过。。二刷居然卡住了

  • 相关阅读:
    CSP-S2-2019游记
    【BZOJ2301】【HAOI2011】Problem B
    【NOIp2017】宝藏
    【NOIp2016】天天爱跑步
    【NOIp2018】保卫王国
    【BZOJ2159】Crash的文明世界
    Van爆零赛总结
    【ZJOI2016】小星星
    【CF1025D】Recovering BST
    【HAOI2016】字符合并
  • 原文地址:https://www.cnblogs.com/reboot329/p/5877839.html
Copyright © 2011-2022 走看看