JAVA算法刷题---DAY2 牛牛的快递、最小花费爬楼梯、数组中两个字符串的最小距离
本系列可作为JAVAEE初阶学习系列的笔记文中提到的一些练习的代码小编会将代码复制下来大家复制下来就可以练习了方便大家学习。点赞关注不迷路您的点赞、关注和收藏是对小编最大的支持和鼓励系列文章目录JAVA初阶---------已更完JAVA数据结构---------已更完数据库初阶----------已更完JAVA EE初阶---------正在更新JAVA算法刷题---DAY1 数字统计、两个数组的交集、点击消除JAVA算法刷题---DAY2 牛牛的快递、最小花费爬楼梯、数组中两个字符串的最小距离目录目录系列文章目录目录前言1.数字统计描述输入描述输出描述示例1示例22.最小花费爬楼梯描述输入描述输出描述示例1示例23.数组中两个字符串的最小距离描述输入描述输出描述示例1示例2备注总结前言小编作为新晋码农一枚会定期整理一些写的比较好的代码作为自己的学习笔记会试着做一下批注和补充如转载或者参考他人文献会标明出处非商用如有侵权会删改欢迎大家斧正和讨论1.数字统计题目链接牛牛的快递_牛客题霸_牛客网描述牛牛正在寄快递他了解到快递在 1kg 以内的按起步价 20 元计算超出部分按每 kg 1元计算不足 1kg 部分按 1kg计算。如果加急的话要额外付五元请问牛牛总共要支付多少快递费输入描述第一行输入一个单精度浮点数 a 和一个字符 b a 表示牛牛要寄的快递的重量b表示牛牛是否选择加急y 表示加急 n 表示不加急。输出描述输出牛牛总共要支付的快递费用示例1输入1.5 y复制输出26示例2输入0.7 n复制输出20import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner innew Scanner(System.in); double a in.nextDouble(); char bin.next().charAt(0); int ret0; if(a1){ ret20; }else{ ret20(int)Math.ceil(a-1); } if(by){ ret5; } System.out.println(ret); } }2.最小花费爬楼梯题目链接最小花费爬楼梯_牛客题霸_牛客网描述给定一个整数数组 cost cost 其中 cost[i] cost[i] 是从楼梯第i i 个台阶向上爬需要支付的费用下标从0开始。一旦你支付此费用即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。数据范围数组长度满足 1≤n≤105 1≤n≤105 数组中的值满足 1≤costi≤104 1≤costi≤104输入描述第一行输入一个正整数 n 表示数组 cost 的长度。第二行输入 n 个正整数表示数组 cost 的值。输出描述输出最低花费示例1输入3 2 5 20复制输出5复制说明你将从下标为1的台阶开始支付5 向上爬两个台阶到达楼梯顶部。总花费为5示例2输入10 1 100 1 1 1 90 1 1 80 1复制输出6复制说明你将从下标为 0 的台阶开始。 1.支付 1 向上爬两个台阶到达下标为 2 的台阶。 2.支付 1 向上爬两个台阶到达下标为 4 的台阶。 3.支付 1 向上爬两个台阶到达下标为 6 的台阶。 4.支付 1 向上爬一个台阶到达下标为 7 的台阶。 5.支付 1 向上爬两个台阶到达下标为 9 的台阶。 6.支付 1 向上爬一个台阶到达楼梯顶部。 总花费为 6 。import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner innew Scanner(System.in); int nin.nextInt(); int[] costnew int[n]; int[] dpnew int[n1]; for(int i0;in;i){ cost[i]in.nextInt(); } if (n 1) { System.out.println(cost[0]); return; } for(int i2;in;i){ dp[i]Math.min(dp[i-1]cost[i-1],dp[i-2]cost[i-2]); } System.out.println(dp[n]); } }3.数组中两个字符串的最小距离题目链接数组中两个字符串的最小距离_牛客题霸_牛客网描述给定一个字符串数组strs再给定两个字符串str1和str2返回在strs中str1和str2的最小距离如果str1或str2为null或不在strs中返回-1。输入描述输入包含有多行第一输入一个整数n1≤n≤1051≤n≤105代表数组strs的长度第二行有两个字符串分别代表str1和str2接下来n行每行一个字符串代表数组strs (保证题目中出现的所有字符串长度均小于等于10)。输出描述输出一行包含一个整数代表返回的值。示例1输入1 CD AB CD复制输出-1示例2输入5 QWER 666 QWER 1234 qwe 666 QWER复制输出1备注时间复杂度On额外空间复杂度O1import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) throws Throwable{ BufferedReader readernew BufferedReader(new InputStreamReader(System.in)); int nInteger.parseInt(reader.readLine()); String[] strreader.readLine().split( ); String s1str[0],s2str[1]; int prev1-1,prev2-1; int ret0X3f3f3f3f; for(int i0;in;i){ String sreader.readLine(); if(s.equals(s1)){ if(prev2!-1){ retMath.min(ret,i-prev2); } prev1i; } else if(s.equals(s2)){ if(prev1!-1){ retMath.min(ret,i-prev1); } prev2i; } } System.out.println(ret0X3f3f3f3f?-1:ret); } }总结以上就是今天要讲的内容本文简单记录了算法刷题内容仅作为一份简单的笔记使用大家根据注释理解您的点赞关注收藏就是对小编最大的鼓励