java经典算法-day7

举报
喵手 发表于 2024/09/30 22:42:11 2024/09/30
【摘要】 哈喽,各位小伙伴们好,我是喵手。一、前言正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。二、题目描述:题目1:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?...


哈喽,各位小伙伴们好,我是喵手。

一、前言

正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。

二、题目描述:

题目1:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

题目2:

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

三、思路分析:

题1分析:

       这道题既视感就像是做初三的物理题,有没有?但是这道题不需要考虑空气阻力,每次回弹是上一次高度的一半,其实到这里,就明白了[100,50,25,12,5,6,25...]。每一次高度是上一次的一半,则第二次就可以理解成,
  • h1 = 100,s1 = (h1+h1/2);
  • h2 = 50,s2 =(h2+h2/2);
  • h3 = 25,s3 =(h3+h3/2);
  • ...

题2分析:

       这题既视感就像是高中数学中的排列组合,题意就是要求四个不重复数字中,任何组合共有多少种且数字不重复,最直接的做法就是运用排列组合的逻辑思想,进行解答即可。

四、算法实现:

题1AC代码:

/**
 * 第count次小球落地,共经过多少米?
 */
public static Map<String, Double> sumLj(int count) {
    //用于记录距离与高度
    Map<String, Double> map = new HashMap<>();
    double s = 0;
    double h = 100;
    for (int i = 0; i <= count; i++) {
        //掉落的高度
        s += h;
        //高度减半,顺便记录下一弹的高度
        h = h / 2;
        //叠加弹上的高度
        s += h;
    }
    //添加返回值
    map.put("s", s);
    map.put("h", h);
    return map;
}

题2AC代码:

public static Map plzh() {

    Map map = new HashMap<>();
    //记录排列的每一个数字
    List<Integer> list = new ArrayList<>();
    //记录排法
    int count = 0;
    for (int i = 1; i <= 4; i++) {
        for (int j = 1; j <= 4; j++) {
            for (int k = 1; k <= 4; k++) {
                //数字不可重复使用
                if (i != j && j != k && k != i) {
                    //记录次数
                    count += 1;
                    //排列数字
                    int temp = i * 100 + j * 10 + k;
                    //添加数字
                    list.add(temp);
                }
            }
        }
    }
    map.put("count", count);
    map.put("list", list);
    return map;
}

五、总结:

综上,第一道有点像高中物理上的题,我就记得那时候还需要考虑空气阻力等因素,但是这道题纯规律题,所以最好的做法就是通过迭代进行计算。第二道就是排列组合题,考察还是循环嵌套使用。

如果你有更好的解题思路或者想法,欢迎评论区留言告诉我哦,喵手感激不尽。

六、文末:

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

... ...
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

---------------------------------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

---------------------------------------------------------------------

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。