JAVA题目笔记(十五)经典算法题
一、按要求排序
要求:定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序
属性包括:姓名,年龄,身高
按照年龄大小进行排序,年龄一样按照身高排序,身高一样按照姓名字母进行排序。
(姓名不含中文或者字符)
自己的:
import java.util.Arrays;
import java.util.Comparator;public class Main {public static void main(String[] args){Girlfirend g1=new Girlfirend("Sushan",18,160);Girlfirend g2=new Girlfirend("Suhai",18,161);Girlfirend g3=new Girlfirend("Sudongpo",17,161);Girlfirend[] arr=new Girlfirend[]{g1,g2,g3};Arrays.sort(arr, new Comparator<Girlfirend>() {@Overridepublic int compare(Girlfirend o1, Girlfirend o2) {if(o1.getAge()!=o2.getAge())return o1.getAge()-o2.getAge();else {if(o1.getHeight()!=o2.getHeight())return o1.getHeight()-o2.getHeight();else{if(o1.getName().charAt(0)==(o2.getName().charAt(0))){return 0;}elsereturn o1.getName().charAt(0)-o2.getName().charAt(0);}}}});System.out.println("_____");System.out.println(String.valueOf(g1)); //返回对象的字符串表达形式//toString 底层代码同样是返回数组中每个元素的字符串表达形式System.out.println(Arrays.toString(arr));}
}
答案:
import java.util.Arrays;
import java.util.Comparator;public class Main {public static void main(String[] args){Girlfirend g1=new Girlfirend("Sushan",18,160);Girlfirend g2=new Girlfirend("Suhai",18,161);Girlfirend g3=new Girlfirend("Sudongpo",17,161);Girlfirend[] arr=new Girlfirend[]{g1,g2,g3};Arrays.sort(arr, new Comparator<Girlfirend>() {@Overridepublic int compare(Girlfirend o1, Girlfirend o2) {int temp=o1.getAge()-o2.getAge();temp=temp==0?o1.getHeight()-o2.getHeight():temp;temp=temp==0?o1.getName().compareTo(o2.getName()):temp;if(temp==0)return 0;else if(temp>0)return 1;else return -1;}});System.out.println(Arrays.toString(arr));}
}
知识点:
运算符为条件判断的三元运算符 + String中的compareTo方法
二、不死神兔
要求:有一对兔子,从出生后的第三个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月兔子对数为多少对?
法一:
斐波那契函数:
public class Main {public static void main(String[] args){//有一对兔子,从出生后的第三个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月兔子对数为多少对?int[] arr=new int[12];for(int i=0;i<arr.length;i++){if(i<2)arr[i]=1;elsearr[i]=arr[i-2]+arr[i-1];System.out.println(arr[i]);}}
}
法二:
递归:
public class Main {public static void main(String[] args){//有一对兔子,从出生后的第三个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月兔子对数为多少对?System.out.println(rabbitborn(12));}public static int rabbitborn(int month){if(month==1||month==2)return 1;elsereturn rabbitborn(month-1)+rabbitborn(month-2);}
}
三、猴子吃桃
要求:有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个,以后每天猴子都吃当前剩下的一半,然后再多吃一个,第十天的时候(还没吃)发现只剩下一个桃子了,请问最初一共多少个桃子?
public class Main {public static void main(String[] args){//有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个,以后每天猴子都吃当前剩下的一半,然后再多吃一个,// 第十天的时候(还没吃)发现只剩下一个桃子了,请问最初一共多少个桃子//法一:int[] arr=new int[10];arr[0]=1;for(int i=1;i<arr.length;i++){arr[i]=2*(arr[i-1]+1);}System.out.println(arr[arr.length-1]);//法二:递归System.out.println(getPeach(1));}public static int getPeach(int day){int temp=day;if(temp==10){return 1;}else return 2*(getPeach(temp+1)+1);}
}
四、爬楼梯
要求:爬楼梯,有时候一次爬一个台阶,有时候一次俩,有时候一次三,如果这个楼梯有20个台阶,一共有多少种爬法?
public class Main {public static void main(String[] args){//爬楼梯,有时候一次爬一个台阶,有时候一次俩,有时候一次三,如果这个楼梯有100个台阶,一共有多少种爬法System.out.println(getcount(20));}public static int getcount(int step){if(step==1)return 1;if(step==2)return 2;if(step==3)return 4;return getcount(step-1)+getcount(step-2)+getcount(step-3);}}
相关文章:

JAVA题目笔记(十五)经典算法题
一、按要求排序 要求:定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序 属性包括:姓名,年龄,身高 按照年龄大小进行排序,年龄一样按照身高排序,身高一样按照姓名字母进行排序。…...
「Mac玩转仓颉内测版8」入门篇8 - Cangjie函数与方法
本篇介绍Cangjie编程语言中的函数与方法,帮助理解如何通过函数封装重复操作,提升代码的复用性和可维护性。 关键词 Cangjie函数方法定义参数传递返回值模块化与复用性 一、什么是函数? 函数是一个代码块,用于接收参数、执行操作…...

2024最新版JavaScript逆向爬虫教程-------基础篇之Proxy与Reflect详解
目录 一、监听对象的操作二、Proxy基本使用2.1 创建空代理2.2 定义捕获器2.2.1 Proxy的set和get捕获器2.2.2 Proxy(handler)的13个捕获器 三、Reflect的作用3.1 Reflect的使用3.2 Reflect其余方法(9个)3.3 Proxy与Reflect中的receiver参数3.4 Reflect中的construct方法 ECMAScr…...
代码修改材质参数
1、 如何得到对象使用的材质 获取到对象的渲染器Renderer Mesh Renderer和Skinned Mesh Renderer都继承Renderer,可以用里式替换原则父类获取、装载子类对象 通过渲染器获取到对应材质 可以利用渲染器中的material或者sharedMaterial来获取物体的材质࿰…...

[C++11] 包装器 : function 与 bind 的原理及使用
文章目录 functionstd::function 的基本语法使用 std::function 包装不同的可调用对象function包装普通成员函数为什么要传入 this 指针参数?传入对象指针与传入对象实例的区别 例题 :150. 逆波兰表达式求值 - ⼒扣(LeetCode) bin…...

java项目-jenkins任务的创建和执行
参考内容: jenkins的安装部署以及全局配置 1.编译任务的general 2.源码管理 3.构建里编译打包然后copy复制jar包到运行服务器的路径 clean install -DskipTests -Pdev 中的-Pdev这个参数用于激活 Maven 项目中的特定构建配置(Profile) 在 pom.xml 文件…...
单片机中的BootLoader(重要的概念讲解)
文章目录 一、链接地址和执行地址1. 链接地址(Load Address)2. 执行地址(Execution Address)链接地址与执行地址的关系实际工作流程总结二、相对跳转和绝对跳转1. 相对跳转(Relative Jump)2. 绝对跳转(Absolute Jump)3. `BX` 和 `BL` 指令总结三、散列文件1. 散列文件的…...

【数据分享】中国食品工业年鉴(1984-2023) PDF
数据介绍 一、《中国食品工业年鉴》(以下简称《年鉴》)是一部全面反映上一年度全国食品工业发展情况纪年性、资料性、权威大型年刊。《年鉴(2023)》系统收录了全国食品行业各专业和 31个省(自治区、直辖市)2022年食品工业经济运行情况的综述,《年鉴》是由中国食品工…...

优选算法 - 1 ( 双指针 移动窗口 8000 字详解 )
一:双指针 1.1 移动零 题目链接:283.移动零 class Solution {public void moveZeroes(int[] nums) {for(int cur 0, dest -1 ; cur < nums.length ; cur){if(nums[cur] 0){}else{dest; // dest 先向后移动⼀位int tmp nums[cur];nums[cur] num…...

FairyGUI和Unity联动(入门篇)
一、FairyGUI编辑器中 1.新建按钮、新建组件 编辑器中界面简易设计如下 2.文件-发布设置-发布路径:自己unity项目Resources所在的路径 二、Unity 使用代码展示UI using FairyGUI; using System.Collections; using System.Collections.Generic; using UnityEngi…...
Go:文件输入输出以及json解析
文章目录 读取用户的输入文件读写读文件写文件 文件拷贝io包中接口的概念JSON 数据格式编码解码任意的数据: 读取用户的输入 从键盘和标准输入 os.Stdin 读取输入,最简单的办法是使用 fmt 包提供的 Scan… 和 Sscan… 开头的函数 看如下的程序 func t…...

编写红绿起爆线指标(附带源码下载)
编写需求: 想问问有没有能标注行情起爆点的指标。 效果展示: 红线上,出现绿柱转红柱做多。 蓝线下,出现红柱转绿柱做空。 源码展示(部分源码,完整源码需下载源码文件): IsMainIn…...

设计模式(四)装饰器模式与命令模式
一、装饰器模式 1、意图 动态增加功能,相比于继承更加灵活 2、类图 Component(VisualComponent):定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent(TextView):定义一个对象,可以给这个对象添加一…...
Android11 修改系统语言
1.定义一个view <RelativeLayoutandroid:id"id/rlChooseLanguage"style"style/SettingAboutItem"><TextViewstyle"style/SettingAboutItemTextView"android:text"string/choose_language" /><ImageView style"st…...
vue3 查看word pdf excel文件
也是在网上找的基础上修改的 可以直接使用 npm install vue-office/docx npm install vue-office/excel npm install vue-office/pdf<template><divclass"Office-Preview"v-loading"loading"element-loading-text"文件加载中...">…...

java八股-垃圾回收机制-垃圾回收算法,分代回收,垃圾回收器
文章目录 垃圾回收算法引用计数法可达性分析算法 jvm垃圾回收算法标记清除算法标记整理算法复制算法本章总结 JVM中的分代回收本章总结 JVM有哪些垃圾回收器?1.串行垃圾收集器2.并行垃圾收集器3.CMS(并发)垃圾收集器本章小结 详细聊一下G1垃圾…...
iSCSI 和FC的概述
一、技术基础与架构 iSCSI 技术基础:iSCSI是基于TCP/IP协议的存储网络协议,它实现了在IP网络上运行SCSI协议。架构:iSCSI协议栈包括SCSI层、iSCSI层、TCP/IP层等,通过标准的以太网技术实现存储数据的传输。 FC 技术基础࿱…...
一文了解Android中的AudioFlinger
AudioFlinger 是 Android 音频框架中的一个核心组件,负责管理音频流的混合和输出。它是 Android 音频系统服务的一部分,作为音频框架和硬件之间的桥梁,接收应用程序的音频请求、进行混音处理,并最终通过音频硬件输出声音。 
超全面!一文带你快速入门HTML,CSS和JavaScript!
作为一名后端程序员,在开发过程中避免不了和前端打交道,所以就要了解一些前端的基础知识,比如三剑客HTML,CSS,JavaScript,甚至有必要学习一下Vue、React等前端主流框架。 学习文档:https://www.w3school.com.cn/ 一…...

C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
题目: 题解: char* reverseWords(char* s) {int length strlen(s);char* ret (char*)malloc(sizeof(char) * (length 1));ret[length] 0;int i 0;while (i < length) {int start i;while (i < length && s[i] ! ) {i;}for (int p …...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...