十二、常见算法和Lambda——五道经典算法题

十二、常见算法和Lambda——经典算法题

  • 练习一(按照要求进行排序)
  • 练习2:(不死神兔)
  • 练习3(猴子吃桃子)
  • 练习4(爬楼梯)


练习一(按照要求进行排序)

定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序

  • 要求1:属性有姓名、年龄、身高
  • 要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序(姓名中不要有中文或特殊字符)
package FinalTest.Test1;import java.util.Arrays;public class Test1 {public static void main(String[] args) {/*定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序* 要求1:属性有姓名、年龄、身高* 要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序(姓名中不要有中文或特殊字符)*///0.创建三个女朋友对象GirlFriend gf1 = new GirlFriend("xiaoshishi", 18, 1.67);GirlFriend gf2 = new GirlFriend("xiaodandan", 19, 1.72);GirlFriend gf3 = new GirlFriend("xiaohuihui", 19, 1.78);GirlFriend gf4 = new GirlFriend("abc", 19, 1.78);//1.利用数组存储女朋友信息GirlFriend[] arr = {gf1, gf2, gf3, gf4};//2.利用Arrays中的sort方法进行排序/* Arrays.sort(arr, new Comparator<GirlFriend>() {@Overridepublic int compare(GirlFriend o1, GirlFriend o2) {//按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序double temp = o1.getAge() - o2.getAge();temp = temp == 0 ? o1.getHeight() - o2.getHeight() : temp;temp = temp == 0 ? o1.getName().length() - o2.getName().length() : temp;if (temp > 0) {return 1;} else if (temp < 0) {return -1;} else {return 0;}}});*///lambda表达式Arrays.sort(arr, (o1, o2) -> {//按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序double temp = o1.getAge() - o2.getAge();temp = temp == 0 ? o1.getHeight() - o2.getHeight() : temp;temp = temp == 0 ? o1.getName().length() - o2.getName().length() : temp;if (temp > 0) {return 1;} else if (temp < 0) {return -1;} else {return 0;}});//3.展示一下数组中的内容System.out.println(Arrays.toString(arr));}
}
package FinalTest.Test1;public class GirlFriend {
//    要求1:属性有姓名、年龄、身高private String name;private int age;private double height;public GirlFriend() {}public GirlFriend(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}/*** 获取* @return height*/public double getHeight() {return height;}/*** 设置* @param height*/public void setHeight(double height) {this.height = height;}public String toString() {return "GirlFriend{name = " + name + ", age = " + age + ", height = " + height + "}";}
}

练习2:(不死神兔)

有一个很有名的数学逻辑题叫做不死神兔问题,有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问:第十二个月的兔子对数为多少?
在这里插入图片描述

public static void main(String[] args) {/*有一个很有名的数学逻辑题叫做不死神兔问题,有一对兔子,从出生第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问:第十二个月的兔子对数为多少?*///解法1:int res = method1(12);System.out.println("解法1 第十二个月的兔子对数是:" + res + " 只!");//解法2:(递归的方法)int res2 = getSum(12);System.out.println("解法2 第十二个月的兔子对数是:" + res2 + " 只!");}private static int getSum(int month) {if (month == 1 || month == 2) {return 1;} else {return getSum(month - 1) + getSum(month - 2);}}private static int method1(int month) {//0.创建一个长度为12的数组int[] arr = new int[month];//1.手动给 0 索引和 1 索引赋值arr[0] = 1;arr[1] = 1;//2.利用循环给剩余的索引赋值for (int i = 2; i < arr.length; i++) {arr[i] = arr[i - 1] + arr[i - 2];}//3.获取最大索引的数据return arr[arr.length - 1];}

练习3(猴子吃桃子)

有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个!以后每天猴子都吃当前剩下来的一半,然后再多吃一个,第十天的时候(还没吃),发现只剩下一个桃子了,请问,最初总共多少个桃子?

 public static void main(String[] args) {/*有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个!以后每天猴子都吃当前剩下来的一半,然后再多吃一个,第十天的时候(还没吃),发现只剩下一个桃子了,请问,最初总共多少个桃子?*/int res = getCount(1);System.out.println(res);}private static int getCount(int day) {if (day < 0 || day > 11) {System.out.println("当前时间错误");return -1;}if (day == 10) {return 1;}return (getCount(day + 1) + 1) * 2;}

练习4(爬楼梯)

在这里插入图片描述
在这里插入图片描述

public static void main(String[] args) {//爬楼梯int res = getCount(20);System.out.println(res);}private static int getCount(int n) {if (n == 1) {return 1;}if (n == 2) {return 2;}return getCount(n - 1) + getCount(n - 2);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460291.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spinnaker多云持续交付平台: 部署Minio存储服务

目录 一、实验 1.环境 2.K8S storage节点部署NFS 3.K8S 动态创建PV 4.K8S master节点部署HELM3 4.K8S master节点部署Minio存储服务&#xff08;第一种方式安装&#xff09; 5.Minio客户端安装MC命令 6.K8S master节点使用Docker 部署Minio存储服务&#xff08;第二种方…

零基础学Python之整合MySQL

Python 标准数据库接口为 Python DB-API&#xff0c;Python DB-API为开发人员提供了数据库应用编程接口。 不同的数据库你需要下载不同的DB API模块&#xff0c;例如你需要访问Oracle数据库和Mysql数据&#xff0c;你需要下载Oracle和MySQL数据库模块。 DB-API 是一个规范. 它…

DevOps:CI、CD、CB、CT、CD

目录 一、软件开发流程演化快速回顾 &#xff08;一&#xff09;瀑布模型 &#xff08;二&#xff09;原型模型 &#xff08;三&#xff09;螺旋模型 &#xff08;四&#xff09;增量模型 &#xff08;五&#xff09;敏捷开发 &#xff08;六&#xff09;DevOps 二、走…

2023年智能可穿戴行业市场分析(电商数据查询分析):智能手表销额增长21%,手环明显下滑

近年来&#xff0c;随着技术的进步&#xff0c;智能可穿戴设备在社交网络、医疗保健、导航等诸多领域有着非常广泛的应用&#xff0c;这为大众生活带来了诸多便利。 当前的可穿戴产品形态纷繁多样&#xff0c;主要包括智能手表、智能眼镜、智能手环、健康穿戴和体感控制等等&am…

docker 基于容器创建本地web容器化镜像

一、docker 基于容器创建本地web容器化镜像 1、启动指定buysbox 镜像 docker run --name b1 -it busybox:latest 2、创建目录&#xff0c;并创建html mkdir -p /data/html vi index.html 内容自定义例如&#xff1a;<h1>welcome to busybox<h1> 3、新增窗口&am…

国产数据库 GBase 8a 安装

一、GBase简介 GBase 是南大通用数据技术有限公司推出的自主品牌的数据库产品&#xff0c;在国内数据库市场具有较高的品牌知名度。 二、下载地址&#xff08;需要先注册账号&#xff09; https://www.gbase.cn/download/gbase-8a?categoryINSTALL_PACKAGE 三、环境 服务…

unity-ios-解决内购商品在Appstore上面已配置,但在手机测试时却无法显示的问题

自己这几天用 unity 2021 xcode 14.2 开发ios内购&#xff0c;appstore上面内购商品都已经配置好了&#xff0c;但是在手机里就是不显示&#xff0c;最后才发现必需得满足以下条件才行&#xff1a; 1. Appstore后台 -> 内购商品 -> 商品状态必需为『准备提交』以上状态…

Java 学习和实践笔记(2)

今天的学习进度&#xff1a; 注册并下载安装好了Java 8&#xff0c;之后进行以下配置。 1&#xff09;path 是一个常见的环境变量&#xff0c;它告诉系统除了在当前的目标下妹寻找此程序外&#xff0c;还可以到path指定的目录下找。这句话是什么意思呢&#xff1f;以下举报例…

网络套件字(理论知识)

一、源IP地址和目的IP地址 上次说到IP地址是为了是为了让信息正确的从原主机传送到目的主机&#xff0c;而原IP地址和目的IP地址就是用于标识两个主机的&#xff0c;既然叫做地址必然有着路径规划的作用&#xff0c;而路径规划最重要的就是&#xff0c;从哪来到哪去&#xff0…

Hadoop搭建(完全分布式)

节点分布&#xff1a; bigdata-masterbigdata-slave1bigdata-salve2 NameNode NodeManager NodeManager SecondaryNameNodeDataNodeDataNodeResourceManagerNodeManagerDataNode 目录 一、jdk安装&#xff1a; 二、hadoop安装 一、jdk安装&#xff1a; jdk-8u212链接&am…

Spring IoC容器(四)容器、环境配置及附加功能

本文内容包括容器的Bean 及 Configuration 注解的使用、容器环境的配置文件及容器的附加功能&#xff08;包括国际化消息、事件发布与监听&#xff09;。 1 容器配置 在注解模式下&#xff0c;Configuration 是容器核心的注解之一&#xff0c;可以在其注解的类中通过Bean作用…

vulhub中Apache APISIX 默认密钥漏洞复现(CVE-2020-13945)

Apache APISIX是一个高性能API网关。在用户未指定管理员Token或使用了默认配置文件的情况下&#xff0c;Apache APISIX将使用默认的管理员Token edd1c9f034335f136f87ad84b625c8f1&#xff0c;攻击者利用这个Token可以访问到管理员接口&#xff0c;进而通过script参数来插入任意…