6037. 按奇偶性交换后的最大数字

执行用时:2 ms, 在所有 Java 提交中击败了100.00% 的用户
内存消耗:38.6 MB, 在所有 Java 提交中击败了100.00% 的用户

题目链接:https://leetcode-cn.com/problems/largest-number-after-digit-swaps-by-parity/

解题思路

将下标存入list,同时收集整数,排序后依次放回

代码

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
class Solution {
public int largestInteger(int num) {
char[] arr = String.valueOf(num).toCharArray();
int len = arr.length;
int[] res = new int[len];
int ans = 0;
ArrayList<Integer> oddIdx = new ArrayList<>();
ArrayList<Integer> odd = new ArrayList<>();
ArrayList<Integer> evenIdx = new ArrayList<>();
ArrayList<Integer> even = new ArrayList<>();
for (int i = 0; i < len; i++) {
int cur = arr[i] - '0';
if (cur % 2 == 1) {
odd.add(cur);
oddIdx.add(i);
} else {
even.add(cur);
evenIdx.add(i);
}
}
odd.sort(Comparator.reverseOrder());
even.sort(Comparator.reverseOrder());
for (int i = 0; i < oddIdx.size(); i++) {
res[oddIdx.get(i)] = odd.get(i);
}
for (int i = 0; i < evenIdx.size(); i++) {
res[evenIdx.get(i)] = even.get(i);
}
for (int i = 0; i < res.length; i++) {
ans = ans * 10 + res[i];
}
return ans;
}
}

6037. 按奇偶性交换后的最大数字
https://pisces34.github.io/2022/04/10/leetcode/6037/
发布于
2022年4月10日
许可协议