179. 最大数
难度:中等
给定一组非负整数 nums
,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:nums = [10,2]
输出:"210"
示例 2:
输入:nums = [3,30,34,5,9]
输出:"9534330"
示例 3:
输入:nums = [1]
输出:"1"
示例 4:
输入:nums = [10]
输出:"10"
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 10^9
解答:
class LargerNumberComparator implements Comparator<String>{
@Override
public int compare(String a, String b){
String order1 = a + b;
String order2 = b + a;
return order2.compareTo(order1);
}
}
class Solution {
//自定义排序
//时间复杂度O(NlgN)。空间复杂度O(N)
public String largestNumber(int[] nums) {
String[] strs = new String[nums.length];
for(int i = 0; i < nums.length; i++){
strs[i] = String.valueOf(nums[i]);
}
Arrays.sort(strs, new LargerNumberComparator());
// Arrays.sort(
// strs,
// new Comparator<String>(){
// @Override
// public int compare(String a, String b){
// String order1 = a + b;
// String order2 = b + a;
// return order2.compareTo(order1);
// }
// }
// );
if(strs[0].equals("0")) return "0";
StringBuilder ans = new StringBuilder();
for(String str : strs){
ans.append(str);
}
return ans.toString();
}
}
参考自:
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/largest-number/solution/zui-da-shu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。