leetcode周赛388(1-3)

周赛第一次解出来了三个,虽然第三个比赛时候没解出来但是很近了,就下来试了一下,真的解出来了,记录一下。

1.(100233. 重新分装苹果)题目描述:

bash 复制代码
给你一个长度为 n 的数组 apple 和另一个长度为 m 的数组 capacity 。
一共有 n 个包裹,其中第 i 个包裹中装着 apple[i] 个苹果。同时,还有 m 个箱子,第 i 个箱子的容量为 capacity[i] 个苹果。
请你选择一些箱子来将这 n 个包裹中的苹果重新分装到箱子中,返回你需要选择的箱子的 最小 数量。
注意,同一个包裹中的苹果可以分装到不同的箱子中。

第一版(只需要看懂 同一个包裹中的苹果可以分装到不同的箱子中 这个题就是排序)

java 复制代码
class Solution {
    public int minimumBoxes(int[] apple, int[] capacity) {
        int sum=0;
        for(int num:apple){
            sum+=num;
        }
        Arrays.sort(capacity);
        int count=0;
        for(int i=capacity.length-1;i>=0;i--){
            if(sum<=0){
                return count;
            }
            sum-=capacity[i];
            count++;
        }
        return count;
    }
}

2.(100247. 幸福值最大化的选择方案)题目描述:

bash 复制代码
给你一个长度为 n 的数组 happiness ,以及一个 正整数 k 。
n 个孩子站成一队,其中第 i 个孩子的 幸福值 是 happiness[i] 。你计划组织 k 轮筛选从这 n 个孩子中选出 k 个孩子。
在每一轮选择一个孩子时,所有 尚未 被选中的孩子的 幸福值 将减少 1 。注意,幸福值 不能 变成负数,且只有在它是正数的情况下才会减少。
选择 k 个孩子,并使你选中的孩子幸福值之和最大,返回你能够得到的 最大值 。
输入:happiness = [1,2,3], k = 2
输出:4
解释:按以下方式选择 2 个孩子:
- 选择幸福值为 3 的孩子。剩余孩子的幸福值变为 [0,1] 。
- 选择幸福值为 1 的孩子。剩余孩子的幸福值变为 [0] 。注意幸福值不能小于 0 。
所选孩子的幸福值之和为 3 + 1 = 4 。

第一版(不需要每次都给后面没选到的减一,只需要记录后面的需要减去多少就可以)

java 复制代码
class Solution {
    public long maximumHappinessSum(int[] happiness, int k) {
        int len=happiness.length;
        Arrays.sort(happiness);
        long res=(long)happiness[len-1];
        for(int i=1;i<k;i++){
            if((len-i-1)>=0&&happiness[len-i-1]-i>0){
                happiness[len-i-1]-=i;
            }else{
                return res;
            }
            res+=happiness[len-i-1];
        }
        return res;
    }
}

3.(100251. 数组中的最短非公共子字符串)题目描述:

bash 复制代码
给你一个数组 arr ,数组中有 n 个 非空 字符串。
请你求出一个长度为 n 的字符串 answer ,满足:
answer[i] 是 arr[i] 最短 的子字符串,且它不是 arr 中其他任何字符串的子字符串。如果有多个这样的子字符串存在,answer[i] 应该是它们中字典序最小的一个。如果不存在这样的子字符串,answer[i] 为空字符串。
请你返回数组 answer 。
输入:arr = ["cab","ad","bad","c"]
输出:["ab","","ba",""]
解释:求解过程如下:
- 对于字符串 "cab" ,最短没有在其他字符串中出现过的子字符串是 "ca" 或者 "ab" ,我们选择字典序更小的子字符串,也就是 "ab" 。
- 对于字符串 "ad" ,不存在没有在其他字符串中出现过的子字符串。
- 对于字符串 "bad" ,最短没有在其他字符串中出现过的子字符串是 "ba" 。
- 对于字符串 "c" ,不存在没有在其他字符串中出现过的子字符串。

第一版(我是暴力求解,只需要知道一个字符串的子字符串怎么求就可以,还有就是含有多个长度一样的时候,要取字典序最小的)

java 复制代码
class Solution {
    public String[] shortestSubstrings(String[] arr) {
        String[] res=new String[arr.length];
        for(int i=0;i<arr.length;i++){
            res[i]=genString(i,arr);
        }
        return res;
    }
    public String genString(int index,String[] arr){
        String temp=arr[index];
        boolean flag1=true;
        for(int i=0;i<arr[index].length();i++){
            for(int j=i+1;j<=arr[index].length();j++){
                boolean flag=true;
                for(int m=0;m<arr.length;m++){
                    if(m!=index&&arr[m].contains(arr[index].substring(i,j))){
                        flag=false;
                        break;
                    }
                }
                if(flag){
                    flag1=false;
                    if((j-i)<temp.length())
                        temp=arr[index].substring(i,j);
                    else if((j-i)==temp.length()){
                        if(temp.compareTo(arr[index].substring(i,j))>0){
                            temp=arr[index].substring(i,j);
                        }
                    }
                }
            }
           
        }
        if(flag1){
            return "";
        }
        return temp;
    }
}

总结一下就是,第二题失误就是没看清题,返回值是 long 已经很清晰说明了计算和过程中会出现 int 溢出的情况,但是我当时没看清,用 int 当作了返回值导致在 最后几个测试案例过不去耽搁了好久的时间。。。

第三题就是不会求字符串的 子字符串。。。

铭记!!!

相关推荐
wabs6664 小时前
关于贪心算法的思考
算法·贪心算法
社交怪人4 小时前
【判断大小】信息学奥赛一本通C语言解法(题号1043)
算法
Snasph4 小时前
GNU Make 用户手册(中文版)
服务器·算法·gnu
江澎涌5 小时前
拆解与 AI 的一次对话
人工智能·算法·程序员
sheeta19985 小时前
LeetCode 每日一题笔记 日期:2026.06.02 题目:3635. 最早完成陆地和水上游乐设施的时间 II
笔记·算法·leetcode
Lsk_Smion5 小时前
力扣实训 _ [102].层序遍历--前序--后续_递归与非递归的实现
数据结构·算法·leetcode
Lsk_Smion6 小时前
力扣实训 _ [25].K个一组链表
数据结构·链表
小欣加油7 小时前
leetcode3751 范围内总波动值I
java·数据结构·c++·算法·leetcode
Halo_tjn8 小时前
反射与设计模式1
java·开发语言·算法
V搜xhliang02469 小时前
临床科研新范式:从选题到投稿,AI智能体如何接管全流程?
运维·数据结构·人工智能·算法·microsoft·数据挖掘·自动化