本周算法题解--蓝桥云课数位排序

题目蓝桥云课数位排序
在这里插入图片描述
在这里插入图片描述
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集合但最后没用的代码
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值