leet-code/src/main/java/leetcode/editor/cn/LargestNumber.java
2021-04-29 23:21:52 +08:00

91 lines
2.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给定一组非负整数 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] <= 109
//
// Related Topics 排序
// 👍 542 👎 0
package leetcode.editor.cn;
import java.util.Arrays;
//179:最大数
public class LargestNumber {
public static void main(String[] args) {
//测试代码
Solution solution = new LargestNumber().new Solution();
solution.largestNumber(new int[]{10, 2});
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public String largestNumber(int[] nums) {
int n = nums.length;
// 转换成包装类型,以便传入 Comparator 对象(此处为 lambda 表达式)
Integer[] numsArr = new Integer[n];
for (int i = 0; i < n; i++) {
numsArr[i] = nums[i];
}
Arrays.sort(numsArr, (x, y) -> {
long sx = 10, sy = 10;
while (sx <= x) {
sx *= 10;
}
while (sy <= y) {
sy *= 10;
}
return (int) (-sy * x - y + sx * y + x);
});
if (numsArr[0] == 0) {
return "0";
}
StringBuilder ret = new StringBuilder();
for (int num : numsArr) {
ret.append(num);
}
return ret.toString();
}
}
//leetcode submit region end(Prohibit modification and deletion)
}