《代码随想录》Day29打卡!

news/2025/1/10 22:41:44/

《代码随想录》贪心算法:加油站

本题的完整题目如下:

image.png

本题的完整思路如下: 1.定义两个变量,分别记录当前油量和总的汽油量 2.循环,将当前加油站的油减去到达下一个站点所需要消耗的油累加到之前定义的两个变量上,接下来判断,如果当前油量小于0,则将当前油量置为0,并将结果值记录为i+1。注意在整个过程中,总的油量是一直在累加的。 3.到最后,循环结束后,判断总的油量是否大于等于0,如果大于等于0,则返回结果值。否则返回-1. 本题的完整代码如下:

//134.加油站
class Solution8 {public int canCompleteCircuit(int[] gas, int[] cost) {int startindex = 0;int curgas = 0;int totalgas = 0;for (int i = 0; i < gas.length; i++) {curgas += gas[i] - cost[i];totalgas += gas[i] - cost[i];if(curgas < 0) {curgas = 0;startindex = i + 1;}}return totalgas >= 0 ? startindex : -1;}
}

《代码随想录》贪心算法:分发糖果

本题的完整题目如下所示:

image.png

本题的完整思路如下所示: 1.首先,本题先解决一边,再解决另一边。首先创建一个与原数组大小相同的糖果数组,并且将初始值置为1. 2.接下来循环,判断右边的孩子是否大于左边的孩子,如果是,则给右边的孩子对应的糖果数值加1.如果不是大于,则不做任何操作。 3.这边判断完以后,判断另一边。从后往前遍历。如果左边的孩子大于右边的孩子,则给左边的孩子对应的糖果数值加1,但是该数值并不是直接赋值给该孩子对应的糖果数值。因为,这样的话,很可能不满足第一次遍历后的结果了。所以此时需要在该结果与原本的结果中去一个最大值,作为结果。 本题的完整代码如下所示:

//135.分发糖果
class Solution9 {public int candy(int[] ratings) {int[] candies = new int[ratings.length];// 每个孩子至少分配 1 个糖果for (int i = 0; i < candies.length; i++) {candies[i] = 1;}//右孩子比左孩子大for(int i = 1; i < ratings.length; i++) {if(ratings[i] > ratings[i - 1]) {candies[i] = candies[i - 1] + 1;}}//左孩子比右孩子大for(int j = ratings.length - 2; j >= 0; j--) {if(ratings[j] > ratings[j + 1]) {candies[j] = Math.max(candies[j + 1] + 1, candies[j]);}}int sum = 0;for(int k : candies) {sum+=k;}return sum;}
}

《代码随想录》贪心算法:柠檬水找零

本题的完整题目如下所示:

image.png

本题的完整思路如下所示: 1.首先定义两个数,分别记录当前售货员有的5元与10元的纸钞数。 2.循环,如果当前给的钱是5元,则直接给对应的5元数+1.如果是10元,则判断当前所拥有5元数是否大于0,如果大于0,则5元的数量-1,10元的数量+1.否则,就返回false。如果是20元,则判断5元数量与10元数量是否都大于0,如果大于,则将二者的值都减去1,如果不满足再判断,5元的数量是否大于等于3,如果满足,则5元的数量减去3.否则,就返回false。 3.最后循环结束,返回true。 本题的完整代码如下所示:

//860.柠檬水找零
class Solution10 {public boolean lemonadeChange(int[] bills) {int five = 0, ten = 0;for (int bill : bills) {if (bill == 5) {five++;} else if (bill == 10) {if (five == 0) {return false;}five--;ten++;} else {if (five > 0 && ten > 0) {five--;ten--;} else if (five >= 3) {five -= 3;} else {return false;}}}return true;}
}

《代码随想录》贪心算法:根据身高重建队列

本题的完整题目如下:

image.png

本题的完整思路如下: 1.本题首先需要根据身高值进行从大到小排序,这样就能保证,在后续调整的时候后边的数移到前边,不会影响排序。 2.排好序后,再根据第二个数值进行判别,第二个数为几,就将其插入到索引为几的位置。 3.本题的难点就是,思路,一般很难想到。 本题的完整代码如下:

//406.根据身高重建队列
class Solution11 {public int[][] reconstructQueue(int[][] people) {// 身高从大到小排(身高相同k小的站前面)Arrays.sort(people, (a, b) -> {if (a[0] == b[0]) return a[1] - b[1];   // a - b 是升序排列,故在a[0] == b[0]的狀況下,會根據k值升序排列return b[0] - a[0];   //b - a 是降序排列,在a[0] != b[0],的狀況會根據h值降序排列});LinkedList<int[]> que = new LinkedList<>();for(int[] p : people) {que.add(p[1],p);}return que.toArray(new int[people.length][]);}
}

http://www.ppmy.cn/news/1562078.html

相关文章

nginx负载均衡-基于端口的负载均衡(一)

注意&#xff1a; (1) 做负载均衡技术至少需要三台服务器&#xff1a;一台独立的负载均衡器&#xff0c;两台web服务器做集群 一、nginx分别代理后端web1 和 web2的三台虚拟主机 1、web1&#xff08;nginx-10.0.0.7&#xff09;配置基于端口的虚拟主机 [rootOldboy extra]# …

【shell编程】报错信息:bash: bad file descriptor(包含6种解决方法)

大家好&#xff0c;我是摇光~ 在运行 Shell 脚本时&#xff0c;遇到 bash: bad file descriptor 错误通常意味着脚本尝试对一个无效或不可用的文件描述符&#xff08;file descriptor&#xff09;执行了读写操作。 以下是一些可能导致这个问题的原因、详细案例以及相应的解决…

nlp培训重点-2

bert,albert,robotbert,xl_net 1. 贝叶斯公式 import math import jieba import re import os import json from collections import defaultdictjieba.initialize()""" 贝叶斯分类实践P(A|B) (P(A) * P(B|A)) / P(B) 事件A&#xff1a;文本属于类别x1。文本…

腾讯云更改用户为root

最近买了台99元一年的2核的云服务器&#xff0c;方便学习一些java开发中间件&#xff0c;以及部署一些项目。 1.设置root用户密码 sudo passwd root 2.修改配置文件 ll /etc | grep ssh cd /etc/ssh/ ls vim sshd_config 输入/PasswordAuthentication 寻找 输入:set nu 再按下…

【C++经典例题】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a; 期待您的关注 题目描述&#xff1a; 原题链接&#xff1a; 求123...n_牛客题霸_牛客网 (nowcoder.com) 解题思路&#xff1a; …

如何知道深度学习模型中,每个模块的功能是什么

在深度学习模型中&#xff0c;研究人员可以通过以下几种主要方式来理解每个模块的功能&#xff1a; 可视化技术 特征图可视化&#xff1a;对于卷积神经网络&#xff08;CNN&#xff09;&#xff0c;可以查看中间层的特征图。例如&#xff0c;在图像分类任务中&#xff0c;通过可…

(超详细)Maven安装配置、以及在IDEA中创建Maven项目

一、登录官网下载Maven Download Apache Maven – Maven 根据自己所需要进行下载&#xff0c;如果是windows系统就下载zip文件&#xff0c;Linux系统就下载gz文件 我下载的版本是3.6.3&#xff0c;下面是网盘链接&#xff1a; 百度网盘链接: https://pan.baidu.com/s/1Ytoprb…

国产信创实践(国能磐石服务器操作系统CEOS +东方通TongHttpServer)

替换介绍&#xff1a; 国能磐石服务器操作系统CEOS 对标 Linux 服务器操作系统&#xff08;Ubuntu, CentOS&#xff09; 东方通TongHttpServer 对标 Nginx 负载均衡Web服务器 第一步&#xff1a; 服务器安装CEOS映像文件&#xff0c;可直接安装&#xff0c;本文采用使用VMware …