import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 最大数
     * @param nums int整型一维数组
     * @return string字符串
     */
    public String solve (int[] nums) {
        // write code here
        if (nums == null || nums.length == 0) {
            return "";
        }
        // 当只有一个元素的时候,直接返回
        if(nums.length == 1) {
            return nums[0] + "";
        }
        // 使用大顶堆进行排序
        PriorityQueue<String> priorityQueue = new PriorityQueue<>
        (new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o2 + o1).compareTo(o1 + o2);
            }
        });
        for (int i = 0; i < nums.length; i++) {
            priorityQueue.offer(String.valueOf(nums[i]));
        }
        StringBuffer sb = new StringBuffer();
        // 判断堆元素是否为0,为0直接返回0
        if (priorityQueue.peek().equals("0")) {
            return "0";
        }
        // 堆元素不为零进行拼接
        while (!priorityQueue.isEmpty()) {

            sb.append(priorityQueue.poll());
        }
        return sb.toString();
    }
}