比赛链接:力扣 第 288 场周赛
题1——按奇偶性交换后的最大数字
题目链接:6037. 按奇偶性交换后的最大数字
难度:简单
题意: 给出一个数字,可以任意交换两个相同奇偶性相同的数字,返回最大的结果
1)比赛时的思路:
暴力枚举
1.用 List
把数字的每一位都存下来
2. 遍历 i ∈ [0, n) ,j ∈ [i, n),即从i开始,每次都将i后面比较大的数放前面
3. 最后根据List将结果拼起来
时间复杂度:O(N2)
class Solution {
public int largestInteger(int num) {
if(num <= 10) return num;
ArrayList<Integer>list = new ArrayList<>();
while(num > 0){
list.add(0, num % 10);
num /= 10;
}
int n = list.size();
for(int i = 0; i < n; i++){
for(int j = i; j < n; j++){
if(i != j){
int a = list.get(i);
int b = list.get(j);
if(b > a && ((a % 2) == (b % 2))){
list.set(i, b);
list.set(j, a);
}
}
}
}
int ans = 0;
for(int i = 0; i < n; i++){
ans = ans * 10 + list.get(i);