java语言解法
特别注意全为0的情况,用冒泡排序可以暴力解决。

import java.util.*;
import java.util.Arrays;

public class Solution {
    /**
     * 最大数
     * @param nums int整型一维数组 
     * @return string字符串
     */
    public String solve (int[] nums) {
        // write code here
        if(nums==null||nums.length==0){
            return null;
        }
        int temp1=0;
        String s="";
        for(int i=0;i<nums.length-1;++i){
            for(int j=0;j<nums.length-1-i;++j){
                temp1=temp1+nums[j];
                String a=String.valueOf(nums[j]);
                String b=String.valueOf(nums[j+1]);
                if(!compare(a+b,b+a)){
                    int temp=nums[j+1];
                    nums[j+1]=nums[j];
                    nums[j]=temp;

                }
            }
        }
        if (temp1==0){
            return "0";
        }
        for(int i=0;i<nums.length;i++){
            s=s+String.valueOf(nums[i]);
        }
        return s;
    }

    public boolean compare(String a,String b){
        int i=Integer.parseInt(a);
        int j=Integer.parseInt(b);
        if(i>j){
            return true;
        }else{
            return false;
        }

    }
}