【每日一题见微知著】记录一次力扣周赛全AC

2185. 统计包含给定前缀的字符串

给你一个字符串数组 words 和一个字符串 pref

返回 words 中以 pref 作为 前缀 的字符串的数目。

字符串 s前缀 就是 s 的任一前导连续字符串。

class Solution {
    
    
    public int prefixCount(String[] words, String pref) {
    
    
        int ans=0;
        for(String i:words){
    
    
            if(j(i,pref)){
    
    
                ans++;
            }
        }
        return ans;
    }
    
    public boolean j(String a,String b){
    
    
        for(int i=0;i<b.length();i++){
    
    
            if(i>=a.length()||a.charAt(i)!=b.charAt(i)){
    
    
                return false;
            }
        }
        return true;
    }
}

2186. 使 两 字 符 串 互 为 字 母 异 位 词 的 最 少 步 骤 数 \textcolor{orange}{2186. 使两字符串互为字母异位词的最少步骤数} 2186.使

给你两个字符串 st 。在一步操作中,你可以给 s 或者 t 追加 任一字符

返回使 st 互为 字母异位词 所需的最少步骤数*。*

字母异位词 指字母相同但是顺序不同(或者相同)的字符串。

class Solution {
    
    
    public int minSteps(String s, String t) {
    
    
        if(s.equals(t)){
    
    
            return 0;
        }
        int[] count=new int[26];
        for(char i:s.toCharArray()){
    
    
            count[(int)(i-'a')]++;
        }
        for(char i:t.toCharArray()){
    
    
            count[(int)(i-'a')]--;
        }
        int ans=0;
        for(int i:count){
    
    
            ans+=(int)Math.abs(i);
        }
        return ans;
    }
}

2187. 完 成 旅 途 的 最 少 时 间 \textcolor{orange}{2187. 完成旅途的最少时间} 2187.

给你一个数组 time ,其中 time[i] 表示第 i 辆公交车完成 一趟****旅途 所需要花费的时间。

每辆公交车可以 连续 完成多趟旅途,也就是说,一辆公交车当前旅途完成后,可以 立马开始 下一趟旅途。每辆公交车 独立 运行,也就是说可以同时有多辆公交车在运行且互不影响。

给你一个整数 totalTrips ,表示所有公交车 总共 需要完成的旅途数目。请你返回完成 至少 totalTrips 趟旅途需要花费的 最少 时间。

class Solution {
    
    
    public long minimumTime(int[] time, int totalTrips) {
    
    
        int t=totalTrips;
        Arrays.sort(time);
        
        long r=(long)time[0]*t;
        long l=0;
        while(l<r){
    
    
            long mid=(r-l)/2+l;
            if(judge(time,mid,t)){
    
    
                r=mid;
            }
            else{
    
    
                l=mid+1;
            }
        }
        return l;
    }
    
    public boolean judge(int[] time,long T,int t){
    
    
        int res=0;
        for(int i=0;i<time.length;i++){
    
    
            res+=(int)(T/time[i]);
            if(res>=t){
    
    
                return true;
            }
        }
        return false;
    }
}

2188. 完 成 比 赛 的 最 少 时 间 \textcolor{red}{2188. 完成比赛的最少时间} 2188.

给你一个下标从 0 开始的二维整数数组 tires ,其中 tires[i] = [fi, ri] 表示第 i 种轮胎如果连续使用,第 x 圈需要耗时 fi * ri(x-1) 秒。

  • 比方说,如果 fi = 3ri = 2 ,且一直使用这种类型的同一条轮胎,那么该轮胎完成第 1 圈赛道耗时 3 秒,完成第 2 圈耗时 3 * 2 = 6 秒,完成第 3 圈耗时 3 * 22 = 12 秒,依次类推。

同时给你一个整数 changeTime 和一个整数 numLaps

比赛总共包含 numLaps 圈,你可以选择 任意 一种轮胎开始比赛。每一种轮胎都有 无数条 。每一圈后,你可以选择耗费 changeTime换成 任意一种轮胎(也可以换成当前种类的新轮胎)。

请你返回完成比赛需要耗费的 最少 时间。

class Solution {
    
    
    public int minimumFinishTime(int[][] tires, int changeTime, int numLaps) {
    
    
        int[] min=new int[numLaps+1];
        
        for(int i=1;i<=numLaps;i++){
    
    
            min[i]=Integer.MAX_VALUE;
            for(int k=0;k<tires.length;k++){
    
    
                if(tires[k][0]!=-1){
    
    
                    long f=(long)tires[k][0];
                    long r=(long)tires[k][1];
                    long sum=f*(1-(long)Math.pow(r,i))/(1-r);
                    if(sum<min[i]){
    
    
                        min[i]=(int)sum;
                    }
                    else if(sum>=Integer.MAX_VALUE){
    
    
                        tires[k][0]=-1;
                    }
                }
            }
        }
        
        for(int i=1;i<=numLaps;i++){
    
    
            for(int k=1;k<=i-k;k++){
    
    
                min[i]=Math.min(min[k]+min[i-k]+changeTime,min[i]);
            }
        }
        // for(int i=1;i<=numLaps;i++){
    
    
        //     System.out.println(min[i]);
        // }
        
        return min[numLaps];
    }
}

结尾

题目来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems

⭐️关注作者,带你刷题,从简单的算法题了解最常用的算法技能(寒假每日一题)
⭐️关注作者刷题——简单到进阶,让你不知不觉成为无情的刷题机器,有问题请私信

猜你喜欢

转载自blog.csdn.net/caqjeryy/article/details/123195216