0%

剑指offer-45

题目

结果

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution {
public String minNumber(int[] nums) {
Integer[] integers = new Integer[nums.length];
for (int i = 0; i < nums.length; i++) {
integers[i] = nums[i];
}
Arrays.sort(integers, (o1, o2) -> {
if (o1.intValue() == o2.intValue()) {
return 0;
}
if (o1.toString().length() == o2.toString().length()) {
return o1.compareTo(o2);
} else {
return cmp(o1.toString(), o2.toString());
}
});
StringBuilder ans = new StringBuilder();
for (int i = 0; i < nums.length; i++) {
ans.append(integers[i]);
}
System.out.println(Arrays.toString(integers));
return ans.toString();
}

public int cmp(String s1, String s2) {
int tmp = cmp(s1.charAt(0), s2.charAt(0));
if (tmp != 0) {
return tmp;
}
int num1 = Integer.parseInt(s1 + s2);
int num2 = Integer.parseInt(s2 + s1);
return Integer.compare(num1, num2);
}

private int cmp(char c1, char c2) {
return Character.compare(c1, c2);
}
}

复杂度

时间复杂度:O(nlogn)

空间复杂度:O(n)