zoukankan      html  css  js  c++  java
  • LeetCode-Largest Number

    Given a list of non negative integers, arrange them such that they form the largest number.

    For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.

    Note: The result may be very large, so you need to return a string instead of an integer.

    Credits:
    Special thanks to @ts for adding this problem and creating all test cases.

    Analysis:

    We sort the numbers in a sequence that for any number i and j, if (String) i+j > (String) j+i, then we choose i before j.

    Solution:

    public class Solution {
        public String largestNumber(int[] nums) {
            if (nums.length==0) return "";
            List<char[]> numStrs = new ArrayList<char[]>();
            for (int i=0;i<nums.length;i++){
                numStrs.add(Integer.toString(nums[i]).toCharArray());
            }
            
            Collections.sort(numStrs,new Comparator<char[]>(){
                public int compare(char[] n1, char[] n2){
                    char[] d1 = new char[n1.length+n2.length];
                    char[] d2 = new char[n1.length+n2.length];
                    for (int i=0;i<n1.length;i++){
                        d1[i] = n1[i];
                        d2[n2.length+i] = n1[i];
                    }
                    for (int i=0;i<n2.length;i++){
                        d1[i+n1.length] = n2[i];
                        d2[i] = n2[i];
                    }
                    
                    for (int i=0;i<d1.length;i++)
                        if (d1[i]!=d2[i]){
                            return (int)d1[i]-(int)d2[i];
                        }
                    
                    return 0;
                }
            });
            
            StringBuilder builder = new StringBuilder();
            builder.append(numStrs.get(numStrs.size()-1));
            if (builder.toString().equals("0")) return "0";
            
            for (int i=numStrs.size()-2;i>=0;i--){
                builder.append(numStrs.get(i));
            }
            return builder.toString();
            
        }
    }
  • 相关阅读:
    #include <utility>
    Html的空格显示
    ExtJs自学教程(1):一切从API開始
    天黑的时候,我又想起那首歌
    citrix协议ICA技术原理
    约瑟夫环问题
    数据结构和算法设计专题之---八大内部排序
    HDU
    深入分析C++引用
    八大排序算法总结
  • 原文地址:https://www.cnblogs.com/lishiblog/p/5863485.html
Copyright © 2011-2022 走看看