day02笔试练习

1.牛牛的快递

题目链接:牛牛的快递_牛客题霸_牛客网

复制代码
 public static void main(String[] args){
        Scanner in  = new Scanner(System.in);
        double  a = in.nextDouble();
        char c = in.next().charAt(0);
        int ret = 0;
        if(a <= 1){
           ret = 20;
        }if(a > 1){

            ret = 20 + (int) Math.ceil(a - 1);
        }
        if(c == 'y'){
            ret += 5;
        }
        System.out.println(ret);
    }

2.最小花费爬楼梯

题目链接:最小花费爬楼梯_牛客题霸_牛客网

要走到dpi的位置:

要么花最少得钱走到 i- 2 再从i - 2 位置花费 costi - 2 走到 dpi ;

要么花最少得钱走到 i - 1 再从 i - 1 位置花费 costi - 1 走到 dpi

复制代码
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] cost = new int[n];
        int[] dp = new int[n + 1];//可能走到 n + 1

        for (int i = 0; i < n; i++) {
           cost[i]  = sc.nextInt();
        }
        //0 和 1 都可能是最开始的位置 所以我们是从 2 位置开始收费的
        for (int i = 2; i <= n ; i++) {
            dp[i] = Math.min(dp[i - 2] + cost[i - 2],dp[i -1] + cost[i - 1]);
        }
        System.out.println(dp[n]);
    }

3.数组中两个字符串的最小距离

题目链接:数组中两个字符串的最小距离__牛客网

题目解析:

首先: 我们遍历给出的字符串找到第一个出现str1 或者 str2 的位置,同时我们再创建两个变量 prev1 和 prev2,prev1 存放 str1 所在的位置 prev2 存放 str2 所在的位置

接着我们在第一次出现str1 或者 第一次出现 str2 的位置的右边查看是否有 str2 或者 str1,如果有的话 prev2 和 prev1 存放该位置 再把 prev1 存放的位置和 prev2 存放的位置进行相减存放在ret中

最后再进行遍历找到第二次出现 str1 或者 str2 的位置 在prev中存放新的位置值 再进行相减

复制代码
 public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
          int n = Integer.parseInt(reader.readLine());
          String[] str = reader.readLine().split(" ");
          String s1 = str[0],s2 = str[1];
          int prev1 = -1,prev2 = -1,ret = 0x3f3f3f;
        for (int i = 0; i < n; i++) {
            String s = reader.readLine();
            if(s.equals(s1)){
               if(prev2 != -1){
                   ret = Math.min(ret,i - prev2);
               }
               prev1 = i;
            }
            else if(s.equals(s2)){
                if(prev1 != -1){
                    ret = Math.min(ret,i - prev1);
                }
                prev2 = i;
            }
        }
        System.out.println(ret == 0x3f3f3f ? -1 : ret );
    }
相关推荐
金銀銅鐵6 小时前
为什么枚举类中可以定义抽象方法
java·后端·ai编程
xiaoye-duck7 小时前
《C++ 项目:手写大模型接入 SDK》Gemini接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
文丑颜不良啊7 小时前
LeetCode1941~1960题目解析
java·leetcode
txxzjmzlh7 小时前
SpringBoot 统⼀功能处理
java·spring boot·后端
nice_lcj5209 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
码农小河6610 小时前
基于SSM+JSP+MySQL的在线医疗服务系统的设计与实现
java·开发语言·mysql
老师我太想进步了202610 小时前
【数据结构-4】算法美学之顺序表
数据结构·算法
风影同志7832411 小时前
编码器是激活函数吗?—— 一个看起来很像、其实不是的类比
算法
SL_staff11 小时前
从配置失效到逻辑复用:JVS-Logic 如何构建可治理的业务编排中枢
java·spring·产品
特立独行的猫A11 小时前
一份 Markdown 发十个平台:cspub 一稿多投
java·后端·python