力扣-贪心-1【算法学习day.71】

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.重新分装苹果

题目链接: 3074. 重新分装苹果 - 力扣(LeetCode)

题面:

**分析:**优先用容量大的箱子即可

代码:

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

2.装满石头的背包的最大数量

题目链接: 2279. 装满石头的背包的最大数量 - 力扣(LeetCode)

题面:

**分析:**预处理出差值数组,然后优先最少的即可

代码:

java 复制代码
class Solution {
    public int maximumBags(int[] capacity, int[] rocks, int additionalRocks) {
        int n = capacity.length;
        for(int i = 0;i<n;i++){
            capacity[i]-=rocks[i];
        }
        Arrays.sort(capacity);
        int count = 0;
        for(int i = 0;i<n;i++){
            if(capacity[i]>additionalRocks)return count;
            count++;
            additionalRocks-=capacity[i];
        }
        return count;
    }
}

3.雪糕的最大数量

题目链接: 1833. 雪糕的最大数量 - 力扣(LeetCode)

题面:

代码:

java 复制代码
class Solution {
    public int maxIceCream(int[] costs, int coins) {
        Arrays.sort(costs);
        int count = 0;
        for(int a:costs){
            if(a>coins)return count;
            count++;
            coins-=a;
        }
        return count;
    }
}

4.K次取反后最大化的数组和

题目链接: 1005. K 次取反后最大化的数组和 - 力扣(LeetCode)

题面:

**分析:**先排序,然后优先让最小的负数编程正数,如果k有多余,再次排序,让最小的那个数进行剩下的操作

代码:

java 复制代码
class Solution {
    public int largestSumAfterKNegations(int[] nums, int k) {
        Arrays.sort(nums);
        int n = nums.length;
        for(int i = 0;i<n&&nums[i]<=0&&k>0;i++){
            k--;
            nums[i] = -nums[i];
        }
        if(k>0){
            Arrays.sort(nums);
            k%=2;
            nums[0] = k==1?-nums[0]:nums[0];
        }
        int sum = 0;
        for(int i = 0;i<n;i++){
            sum+=nums[i];
        }
        return sum;
    }
}

后言

上面是力扣贪心专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!

相关推荐
没有bug.的程序员几秒前
Sentinel 流控原理深度解析:构建高可用微服务的底层架构
java·算法·微服务·云原生·架构·sentinel·负载均衡
深圳佛手1 分钟前
IVFFlat 与 HNSW 算法介绍与对比
人工智能·算法·机器学习
秋邱2 分钟前
Java数组与二维数组:创建、初始化、遍历与实操案例全解析
java·开发语言
Dream it possible!5 分钟前
LeetCode 面试经典 150_分治_将有序数组转换为二叉搜索树(105_108_C++_简单)(递归)
c++·leetcode·面试
Q741_1475 分钟前
C++ 栈 模拟 力扣 227. 基本计算器 II 题解 每日一题
c++·算法·leetcode·模拟
徐新帅8 分钟前
CSP 二进制与小数进制转换专题及答案解析
c++·算法
wxdlfkj8 分钟前
从硬件极限到算法补偿:构建微米级工件特征“在机测量”闭环系统的技术路径解析
人工智能·算法·机器学习
王璐WL10 分钟前
【数据结构】二叉树经典算法题和选择题
数据结构·算法
jllllyuz10 分钟前
MATLAB多目标优化:SQP算法实现
数据结构·算法·matlab
独自破碎E12 分钟前
消息队列如何处理重复消息?
java·开发语言·rocketmq