贪心算法习题其二【力扣】【算法学习day.18】

news2024/11/7 20:38:16

前言

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


习题

1.分发糖果

题目链接:135. 分发糖果 - 力扣(LeetCode)

题面:

基本分析: 从左往右遍历,需要满足高分比低分多,从右往左遍历,同样也需要,遍历两次取最大值

代码:

class Solution {
    public int candy(int[] ratings) {
        int n = ratings.length;
        int[] left = new int[n];
        int[] right = new int[n];
        Arrays.fill(left,1);
        Arrays.fill(right,1);
        for(int i =1;i<n;i++){
            if(ratings[i]>ratings[i-1]){
                left[i]=left[i-1]+1;
            }
        }
        int sum = left[n-1];
         for(int i =n-2;i>=0;i--){
            if(ratings[i]>ratings[i+1]){
                right[i]=right[i+1]+1;
            }
            sum+=Math.max(left[i],right[i]);
        }
        
        return sum;
    }
}

2.柠檬水找零

题目链接:860. 柠檬水找零 - 力扣(LeetCode)

题面:

基本分析:优先使用掉大面值的钱

代码:

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int n = bills.length;
        int[] arr = new int[11];
       for(int c:bills){
        if(c==5){
                arr[5]++;
            }
            else if(c==10){
                if(arr[5]==0)return false;
                arr[5]--;
                arr[10]++;
            }
            else{
                if(arr[10]>0){
                    arr[10]--;
                    if(arr[5]==0)return false;
                    arr[5]--;
                }else{
                    if(arr[5]<3)return false;
                    arr[5]-=3;
                }
            }
       }
         return true;
    }
}

3.根据身高重建队列

题目链接:406. 根据身高重建队列 - 力扣(LeetCode)

题面:

基本分析:先排高的,矮的进行插队

代码:

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        int n = people.length;
        Arrays.sort(people, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if(o1[0]==o2[0])return o1[1]-o2[1];
                return o2[0]-o1[0];
            }
        });
        LinkedList<int[]> list = new LinkedList<>();
        for (int[] i : people) {
            list.add(i[1], i);
        }

        return list.toArray(new int[list.size()][2]);
    }
}

后言

上面是贪心算法的部分习题,下一篇会讲解贪心算法的其他相关力扣习题,希望有所帮助,一同进步,共勉!   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2229521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Axure原型分享】颜色选择器——填充颜色

今天和大家分享颜色选择器——填充颜色的原型模板&#xff0c;点击颜色区域可以弹出颜色选择器&#xff0c;点击可以选择对应颜色&#xff0c;颜色区域会变色我们选择的颜色&#xff0c;具体效果可以观看下方视频或者打开预览地址体验。 【原型效果】 【Axure高保真原型】颜色…

SQL实战训练之,力扣:1843. 可疑银行账户

目录 一、力扣原题链接 二、题目描述 三、建表语句 四、题目分析 五、SQL解答 六、最终答案 七、验证 八、知识点 一、力扣原题链接 1843. 可疑银行账户 二、题目描述 表: Accounts ---------------------- | Column Name | Type | ---------------------- | acco…

软件系统交付阶段必备文档,验收体系配套资料,软件系统各阶段各步骤相关配套资料,各类软件建设方案(word,ppt)

软件文档交付清单是指在软件开发项目完成后&#xff0c;开发团队需要准备的一份详细清单&#xff0c;用于确保交付的软件产品符合客户需求并达到预期的质量标准。以下是软件文档交付清单中可能包含的一些关键要素 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&…

Day07爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; class Solution {public int climbStairs(int n) {if (n 1) return 1;if (n 2) return 2;return climbStairs(n - 1) climbStairs(n - 2);} }用…

【51单片机】串口通信原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 结束语 串口 串口是一种应用十分广泛…

c盘满了怎么清理垃圾而不误删?6招轻松清理C盘,快来试试

c盘满了怎么清理垃圾而不误删&#xff1f;相信平时工作生活中离不开电脑&#xff0c;随着使用电脑时间就了&#xff0c;C 盘的空间会不断被占据&#xff0c;进而致使系统运行变得迟缓&#xff0c;甚至出现卡顿现象。因此&#xff0c;定期清理 C 盘的是非常重要的。很多电脑小白…

Android 托管 Github Action 发布 Github Packages ,实现 Mvn 免费自动化托管

自从多年前 JCenter 关闭服务之后&#xff0c;GSY 项目版本就一直发布在 Jitpack 上&#xff0c;如今每个月也都有大概 10w 左右下载&#xff0c;但是近年来时不时就会出现历史版本丢失的问题&#xff0c;而且有时候还不是某个具体版本丢失&#xff0c;而是版本里的某几个依赖突…

MATLAB中pinv函数用法

目录 语法 说明 示例 使用伪逆求解线性方程组 pinv的功能是得到矩阵的Moore-Penrose 伪逆。 语法 B pinv(A) B pinv(A,tol) 说明 B pinv(A) 返回矩阵 A 的 Moore-Penrose 伪逆。 B pinv(A,tol) 指定容差的值。pinv 将 A 中小于容差的奇异值视为零。 示例 使用伪逆…

DP31 买卖股票的最好时机(二)

DP31 买卖股票的最好时机(二) import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n in.nextInt();int [] p new int[n];int sum 0;for…

.NET Core WebApi第5讲:接口传参实现、数据获取流程、204状态码问题

一、接口传参实现 1、引入&#xff1a;通过网址上两个参数mod...和FID....&#xff0c;区分开要的是哪个板块里面的数据​​​​​ 2、传参实现&#xff1a;在方法的参数处定义STRING字符串 &#xff08;1&#xff09;传1个参数 2>运行代码&#xff0c;在网页上输入以“点…

为什么一定要学AI(Stable Diffusion)做设计?

在当今数字化时代&#xff0c;人工智能技术正在以前所未有的速度和规模改变着各行各业的工作方式和流程。 更多实操教程可以扫描下方&#xff0c;免费获取 而室内设计领域中&#xff0c;AI技术也正在迅速崛起&#xff0c;为设计师们带来了前所未有的便利和创作可能性&#xff0…

mysql密码过期问题处理

链接mysql报错 Your password has expired. To log in you must change it using a client that supports expired passwords; 1、打开mysql链接工具 LINUV bin目录 windows 打开mysql client 2、进入mysql命令框 输入旧密码 3、执行 mysql> set passwordpassword(12345…

灵动AI视频 —— 创意无界,视频新生

在这个瞬息万变的数字时代&#xff0c;每一帧画面都蕴含着无限可能。灵动AI视频&#xff0c;作为一款集智能、高效、创意于一体的视频编辑神器&#xff0c;正引领着视频创作的新潮流。 灵动ai视频用户端&#xff1a;灵动 AI-新一代AI创意生产力平台​编辑https://one.genceai.…

SPA——MVC 与 MVVM - 2024最新版前端秋招面试短期突击面试题【100道】

SPA——MVC 与 MVVM - 2024最新版前端秋招面试短期突击面试题【100道】 &#x1f310; 在现代前端开发中&#xff0c;单页面应用&#xff08;SPA&#xff09;以及不同的架构模式&#xff08;如MVC和MVVM&#xff09;是实现用户交互的关键概念。了解它们的优缺点以及如何应用&a…

Vue3+TypeScript+Vite 后台管理项目

一、前言 我将使用当前最新版本完成项目搭建&#xff0c;我会尽量将每个操作细节记录下来&#xff0c;并且解释原因&#xff0c;标明依据出处&#xff0c;这样即使大家脱离当前这个版本&#xff0c;跟着文章依然可以完成项目搭建&#xff0c;这篇文章也依然有他的价值&#xf…

知识竞赛活动用什么样的话筒或麦克风好呢

搞知识竞赛活动&#xff0c;话筒一般是需要的&#xff0c;从选手到主持人、评委甚至有些观众&#xff0c;每场活动用量不少。 市场上的麦克风五花八门&#xff0c;从价格低廉的入门款到高端专业设备&#xff0c;不胜枚举。这让很多用户在选择时感到无从下手。如何在众多产品中…

面向对象编程中类与类之间的关系(二)

目录 1.引言 2.泛化&#xff08;继承&#xff09;关系 3.实现关系 4.聚合关系 5.组合关系 6.依赖关系 7.关联关系 7.1. 单向关联 7.2. 双向关联 7.3.自关联 8.总结 1.引言 在面向对象设计模式中&#xff0c;类与类之间主要有6种关系&#xff0c;他们分别是&#xff…

贪心算法入门(一)

1.什么是贪心算法&#xff1f; 贪心算法是一种解决问题的策略&#xff0c;它将复杂的问题分解为若干个步骤&#xff0c;并在每一步都选择当前最优的解决方案&#xff0c;最终希望能得到全局最优解。这种策略的核心在于“最优”二字&#xff0c;意味着我们追求的是以最少的时间和…

MATLAB发票识别系统

课题介绍 该课题为基于MATLAB的发票识别系统。主要识别发票的编号。可定做发票的日期&#xff0c;金额等字段的识别。通过输入图片&#xff0c;校正&#xff0c;定位目标区域&#xff0c;分割&#xff0c;字符分割&#xff0c;模板匹配识别&#xff0c;得出结果。整个设计包含…

spark==windows启动spark集群

下载hadoop3.0.0 https://archive.apache.org/dist/hadoop/core/hadoop-3.0.0/ 下载spark3.5.3 Index of /dist/spark/spark-3.5.0 添加环境变量 HADOOP_HOME SPARK_HOME PATH中添加%HADOOP_HOME%\bin,%HADOOP_HOME%\sbin, %SPARK_HOME%\bin,%SPARK_HOME%\sbin, 启动mast…