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 …...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
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 的密码…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
