题目蓝桥云课数位排序
1.看完题目后想到了用map集合,因为有键值对,写到后面才想起来它是不重复的,所以放弃了,想不起来其他方法所以看了看题解,题解使用了Java中的List和Collections类来进行排序操作,但用到了collections类里的方法sort。首先将1到n之间的所有数添加到一个列表中,然后通过调用Collections.sort方法并传入一个自定义的Comparator来进行排序。Comparator中的compare方法实现了按照题目要求比较两个数的大小。
2.遇到的问题主要还是没思路,collections类里的方法简单看过视频,但是没练过,不是很会。Collections.sort()的使用
3.
4.收获就是又简单学习了下Collections类的用法
5.最终代码
package lanqiao2;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
//将1-n之间的数据存入一个列表中
List<Integer> nums = new ArrayList<>();
for (int i = 1; i <= n; i++) {
nums.add(i);
}
//自定义的Comparator来进行排序
Collections.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int sum1 = getDigitSum(o1);
int sum2 = getDigitSum(o2);
//判断排序方式
if (sum1 == sum2) {
return o1 - o2;
} else {
return sum1 - sum2;
}
}
});
//输出排序后的列表中第m个数
System.out.println(nums.get(m - 1));
}
private static int getDigitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
}
6.错误代码
没保存,但是就是我想用map集合但最后没用的代码