当前位置: 首页 > news >正文

day 10 贪心算法

455. 分发饼干

饼干从大的开始利用,优先满足胃口大的;

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int res=0;int index=s.size()-1;for(int i=g.size()-1;i>=0;i--){if(index>=0&&s[index]>=g[i]) {//注意index不要越界,index的范围res+=1;index-=1;}}return res;}
};

另一种方法:

饼干从小的开始利用,优先满足胃口小的;

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int index=0;int res=0;for(int i=0;i<s.size();i++){if(index<g.size()&&g[index]<=s[i]){res+=1;index+=1;}}return res;}
};

376. 摆动序列

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int res=1;if(nums.size()<=1) return nums.size();int pre=0;int cur=0;for(int i=0;i<nums.size()-1;i++){cur=nums[i+1]-nums[i];if((pre>=0&&cur<0)||(pre<=0&&cur>0)){res++;pre=cur;}}return res;}
};

53. 最大子数组和

class Solution {
public:int maxSubArray(vector<int>& nums) {int res=INT_MIN;int count=0;for(int i=0;i<nums.size();i++){count+=nums[i];if(count>res)res=count;if(count<0) count=0;}return res;}
};

122. 买卖股票的最佳时机 II

class Solution {
public:int maxProfit(vector<int>& prices) {int res=0;for(int i=0;i<prices.size()-1;i++){res+=max(prices[i+1]-prices[i],0);}return res;}
};

55. 跳跃游戏

class Solution {
public:bool canJump(vector<int>& nums) {int cover=0;for(int i=0;i<=cover;i++){cover=max(i+nums[i],cover);if(cover>=nums.size()-1) return true;}return false;}
};

45. 跳跃游戏 II

class Solution {
public:int jump(vector<int>& nums) {int res=0;int cur=0;int next=0;if(nums.size()==1)return 0;for(int i=0;i<nums.size();i++){next=max(i+nums[i],next);if(i==cur){res++;cur=next;if(cur>=nums.size()-1){break;}}}return res;}
};

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

class Solution {
public:static bool cmp(int a,int b){return abs(a)>abs(b);}int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(),nums.end(),cmp);for(int i=0;i<nums.size();i++){if(nums[i]<0&&k>0){nums[i]*=-1;k--;}}if(k%2==1){nums[nums.size()-1]*=-1;}int res=0;for(int i=0;i<nums.size();i++){res+=nums[i];}return res;}
};

134. 加油站

感觉加油站这题做的很晕

class Solution {
public://1.从0遍历结束之后,rest>=0,就返回0//2.从0遍历结束之后,rest<0,返回-1//3.从0遍历,发现中间有rest<0,但整体>=0,那就从后遍历找rest累计能补掉这个漏洞的int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int curSum=0;int min=INT_MAX;for(int i=0;i<cost.size();i++){int rest=gas[i]-cost[i];curSum+=rest;if(curSum<min){min=curSum;}}if(min>=0)return 0;if(curSum<0)return -1;for(int i=cost.size()-1;i>=0;i--){int rest=gas[i]-cost[i];min+=rest;if(min>=0)return i;}return -1;}
};

方法2:

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int curSum=0;int totalSum=0;int start=0;for(int i=0;i<gas.size();i++){curSum+=gas[i]-cost[i];totalSum+=gas[i]-cost[i];if(curSum<0){start=i+1;curSum=0;}}if(totalSum<0) return -1;return start;}
};

135. 分发糖果

class Solution {
public:int candy(vector<int>& ratings) {vector<int>candyVec(ratings.size(),1);for(int i=1;i<ratings.size();i++){if(ratings[i]>ratings[i-1]) candyVec[i]=candyVec[i-1]+1;}//从后往前遍历for(int i=ratings.size()-2;i>=0;i--){if(ratings[i]>ratings[i+1]) candyVec[i]=max(candyVec[i],candyVec[i+1]+1);}int res=0;for(int i=0;i<ratings.size();i++){res+=candyVec[i];}return res;}
};

860. 柠檬水找零

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int five=0,ten=0,twenty=0;for(int i=0;i<bills.size();i++){if(bills[i]==5) five++;if(bills[i]==10){if(five==0)return false;else {five--;ten++;}}if(bills[i]==20){if(ten>0&&five>0){ten--;five--;twenty++;}else if(five>=3){five-=3;twenty++;}else return false;}}return true;}
};

406. 根据身高重建队列

class Solution {
public:static bool cmp(const vector<int>& a,const vector<int>& b){if(a[0]==b[0])return a[1]<b[1];return a[0]>b[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(),people.end(),cmp);vector<vector<int>>que;for(int i=0;i<people.size();i++){int position=people[i][1];que.insert(que.begin()+position,people[i]);}return que;}
};

改进:容器使用了list,list底层是链表实现的,比起vector能减少时间复杂度

class Solution {
public:static bool cmp(const vector<int>& a,const vector<int>& b){if(a[0]==b[0])return a[1]<b[1];return a[0]>b[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(),people.end(),cmp);list<vector<int>>que;for(int i=0;i<people.size();i++){int position=people[i][1];auto it=que.begin();while(position--){it++;}que.insert(it,people[i]);}return vector<vector<int>>(que.begin(),que.end());}
};

452. 用最少数量的箭引爆气球

class Solution {
public:static bool cmp(const vector<int>& a,const vector<int>&b){return a[0]<b[0];}int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(),points.end(),cmp);int res=1;for(int i=1;i<points.size();i++){if(points[i][0]>points[i-1][1]){res++;}else{points[i][1]=min(points[i-1][1],points[i][1]);}}return res;}
};

435. 无重叠区间

按照区间末端进行排序

class Solution {
public:static bool cmp(const vector<int>& a,const vector<int>& b){return a[1]<b[1];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end(),cmp);int count=1;int end=intervals[0][1];for(int i=1;i<intervals.size();i++){if(intervals[i][0]>=end){count++;end=intervals[i][1];}else continue;}return intervals.size()-count;}
};

按照区间前段进行排序:

class Solution {
public:static bool cmp(const vector<int>& a,const vector<int>& b){return a[0]<b[0];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end(),cmp);int count=0;int end=intervals[0][1];for(int i=1;i<intervals.size();i++){if(intervals[i][0]>=end){end=intervals[i][1];}else {count++;end=min(end,intervals[i][1]);}}return count;}
};

763. 划分字母区间

class Solution {
public:vector<int> partitionLabels(string s) {//初始化每个字符的最远位置int hash[26]={0};//遍历 初始化for(int i=0;i<s.size();i++){hash[s[i]-'a']=i;}//遍历,寻找最远距离vector<int>res;int left=0;int right=0;for(int i=0;i<s.size();i++){right=max(right,hash[s[i]-'a']);if(right==i){res.push_back(right-left+1);left=right+1;}}return res;}
};

56. 合并区间

class Solution {
public:static bool cmp(const vector<int>& a,const vector<int>& b){return a[0]<b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end(),cmp);    vector<vector<int>>res;res.push_back(intervals[0]);for(int i=1;i<intervals.size();i++){if(intervals[i][0]<=res.back()[1]){res.back()[1]=max(res.back()[1],intervals[i][1]);}else {res.push_back(intervals[i]);}}return res;}
};

738. 单调递增的数字

class Solution {
public:int monotoneIncreasingDigits(int n) {string strNum=to_string(n);//flag标记从哪里开始被赋值成9int flag=strNum.size();for(int i=strNum.size()-1;i>0;i--){if(strNum[i]<strNum[i-1]){flag=i;strNum[i-1]--;}}for(int i=flag;i<strNum.size();i++){strNum[i]='9';}return stoi(strNum);}
};

相关文章:

day 10 贪心算法

455. 分发饼干 饼干从大的开始利用&#xff0c;优先满足胃口大的&#xff1b; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int res0;int indexs.size()-1;for…...

网络安全审计技术原理与应用

网络安全审计概述 概念 定义:对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作 作用:建立“事后”安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线索及证据,以便发现潜在网络安全威胁行为,开展网络安全风险分析及管理 常…...

计算机网络之TCP序号,确认序号和报文传输时间

开篇提示 本篇适合于了解基础知识&#xff0c;进行扩展提高的使用&#xff0c;附带考研习题以及解析。 TCP序号和确认序号的区别 TCP首部中有序号和确认序号&#xff0c;他们都是4个字节&#xff08;4B&#xff09;&#xff0c;且在数据传输中有很重要的意义&#xff0c;那么两…...

HTML优化方法

HTML编码规范 代码格式化与缩进 1.缩进规则 ​ 推荐使用空格缩进而不是Tab&#xff0c;因为不同环境下空格的效果更加一致。常见缩进量为2个或4个空格 2.标签对齐 ​ 在嵌套的HTML结构中&#xff0c;子标签应当缩进&#xff0c;以清晰地展示层级关系。 3.属性的排列 ​ …...

Codeforces Round 961 D. Cases 【SOS DP、思维】

D. Cases 题意 有一个长度为 n n n 且仅由前 c c c 个大写字母组成的字符串&#xff0c;问最少选取多少种字母为每个单词的结尾&#xff0c;使得每个单词长度不超过 k k k 思路 首先注意到最后一个字母一定要选择&#xff0c;接下来我们给出一个断言&#xff1a;如果一个…...

VirtualBox上的Oracle Linux虚拟机安装Docker全流程

1.安装docker依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装docker仓库 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 生成docker的yum源配置到在 /etc/yum.repos.d/docker-ce.repo 3.安装D…...

LNMP安装部署

目录 一、Nginx安装部署 1.安装包下载 2.下载相关依赖工具 3. 创建运行用户 4.编译安装 5.优化路径 6.将nginx添加至系统服务 7.文件赋权 二、MySQL部署安装 1.解压 2.安装相关工具 3.创建运行用户 4.编译安装 5.修改配置文件 6.更改mysql安装目录和配置文件的属…...

django之自定义序列化器用法

在Django中&#xff0c;自定义序列化器方法通常用于处理复杂的数据转换逻辑&#xff0c;特别是在使用Django REST framework&#xff08;DRF&#xff09;时。自定义序列化器方法可以帮助你在序列化和反序列化过程中执行特定的逻辑&#xff0c;比如格式化日期、计算字段值、或者…...

20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡

fdisk -l df -h df -t df -T mount 20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡 2024/8/21 18:06 【切记&#xff0c;对于Rockchip原厂的Buildroot&#xff0c;如果你没有针对性的适配DTS&#xff1a;修改其中的GPIO口供电&#xff0c…...

多模态学习Multimodal Learning:人工智能中的多模态原理与技术介绍初步了解

多模态学习&#xff08;Multimodal Learning&#xff09;是机器学习中的一个前沿领域&#xff0c;旨在综合处理和理解来自不同模态的数据。模态可以包括文本、图像、音频、视频等。随着数据多样性和复杂性增加&#xff0c;多模态学习在自然语言处理、计算机视觉、语音识别等领域…...

外部环境连接kafka

修改配置文件外部环境连接kafka 1、kafka的docker官方镜像地址2、kafka官方介绍的三种连接方式3、方式一&#xff1a;Default configs默认配置4、方式二&#xff1a;File input&#xff08;文件输入&#xff1a;外部配置文件替换docker容器内的配置文件&#xff09;4.1、首先查…...

结合了MySQL数据库、Elasticsearch和Redis,构建一个产品搜索和推荐系统

1. 数据库设置&#xff08;MySQL&#xff09; 首先&#xff0c;我们需要创建两个表来存储产品信息和产品类别信息。 CREATE DATABASE product_system;USE product_system;CREATE TABLE categories (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,created_at…...

白酒与素食:健康与美味的双重享受

在美食的世界里&#xff0c;白酒与素食的搭配仿佛是一场跨界的盛宴。豪迈白酒&#xff08;HOMANLISM&#xff09;的醇香与精致素食的清新&#xff0c;在不经意间交织出了一幅美妙的画卷&#xff0c;让人在品味中感受到健康与美味的双重享受。 素食&#xff0c;以其清淡、自然的…...

工厂现场多功能帮手,三防平板改善管理体验

随着制造业的智能化变革&#xff0c;信息化、自动化和智能化逐渐成为工厂管理的新常态。在这一波技术浪潮中&#xff0c;三防平板作为一种多功能的工作工具&#xff0c;正在逐步改善工厂现场的管理体验。 一、三防平板的定义与特点 三防平板&#xff0c;顾名思义&#xff0c;是…...

【git】问题解决---Failed to connect to github.com

场景 最近运行命令git push,git pull或者git clone的时候总会报如下错误 fatal: unable to access https://github.com/xxxxx/xxxxxx.git/: **Failed to connect to github.com** port 443 after 21052 ms: Couldnt connect to server原因 一般是网络配置原因造成的, 如果能…...

Java 中 String 类型的特点

在 Java 中&#xff0c;String 是一种常用且重要的数据类型&#xff0c;用于表示和处理字符序列。它有一些独特的特性和用法&#xff0c;使得它在开发中非常灵活和高效。以下是关于 String 类型的一些特点、特殊性、使用技巧以及注意事项。 1. String 的特点 1.1 不可变性 定…...

AddressUtils 、RegionUtils IP地址工具类

一、类展示 AddressUtils &#xff1a; /*** 获取地址类**/ Slf4j NoArgsConstructor(access AccessLevel.PRIVATE) public class AddressUtils {// 未知地址public static final String UNKNOWN "XX XX";public static String getRealAddressByIP(String ip) {i…...

牛客网SQL进阶134: 满足条件的用户的试卷总完成次数和题目总练习次数

满足条件的用户的试卷完成数和题目练习数_牛客题霸_牛客网 0 问题描述 基于用户信息表user_info、试卷信息表examination_info、试卷作答记录表exam_record、题目练习记录表practice_record&#xff0c;筛选出 高难度SQL试卷得分平均值大于80并且是7级的用户&#xff0c;统计他…...

机器学习:逻辑回归处理手写数字的识别

1、获取数据, 图像分割该数据有50行100列&#xff0c;每个数字占据20*20个像素点&#xff0c;可以进行切分,划分出训练集和测试集。 import numpy as np import pandas as pd import cv2 imgcv2.imread("digits.png")#读取文件 graycv2.cvtColor(img,cv2.COLOR_BGR2G…...

文件上传真hard

一、SpringMVC实现文件上传 1.1.项目结构 1.1.2 控制器方法 RequestMapping("/upload1.do")public ModelAndView upload1(RequestParam("file1") MultipartFile f1) throws IOException {//获取文件名称String originalFilename f1.getOriginalFilename(…...

精益管理|介绍一本专门研究防错法(Poka-Yoke)的书

在现代制造业中&#xff0c;如何确保产品在每个生产环节中不出现错误是企业追求的目标之一。而实现这一目标的关键技术之一就是防错法&#xff08;Poka-Yoke&#xff09;。作为一种简单而有效的精益管理、六西格玛管理工具&#xff0c;防错法帮助企业避免因人为错误或工艺不当导…...

面试题目:(4)给表达式添加运算符

目录 题目 代码 思路解析 例子 题目 题目 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target &#xff0c;在 num 的数字之间添加 二元 运算符&#xff08;不是一元&#xff09;、- 或 * &#xff0c;返回 所有能够得到 target 的表达式。1 < num.length &…...

[C#]将opencvsharp的Mat对象转成onnxruntime的inputtensor的3种方法

第一种方法&#xff1a;在创建tensor时候直接赋值改变每个tensor的值&#xff0c;以下是伪代码&#xff1a; var image new Mat(image_path);inpWidth image.Width;inpHeight image.Height;//将图片转为RGB通道Mat image_rgb new Mat();Cv2.CvtColor(image, image_rgb, Col…...

CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!

一、CTF简介 CTF&#xff08;Capture The Flag&#xff09;中文一般译作夺旗赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。…...

数据链路层 I(组帧、差错控制)【★★★★★】

&#xff08;★★&#xff09;代表非常重要的知识点&#xff0c;&#xff08;★&#xff09;代表重要的知识点。 为了把主要精力放在点对点信道的数据链路层协议上&#xff0c;可以采用下图&#xff08;a&#xff09;所示的三层模型。在这种三层模型中&#xff0c;不管在哪一段…...

悟空降世 撼动全球

文&#xff5c;琥珀食酒社 作者 | 积溪 一只猴子能值多少钱&#xff1f; 答案是&#xff1a;13个小目标 这两天 只要你家没有断网 一定会被这只猴子刷屏 它就是咱国产的3A游戏 《黑神话&#xff1a;悟空》 这只猴子到底有多火&#xff1f; 这么跟你说吧 茅台见了它都…...

Swoole 和 Java 哪个更有优势呢

Swoole 和 Java 各有优势&#xff0c;在性能上不能简单地说哪一个更好&#xff0c;需要根据具体的应用场景来分析。 Swoole 优势&#xff1a;高并发&#xff1a;Swoole 是一个基于 PHP 的异步、协程框架&#xff0c;专为高并发场景设计&#xff0c;适用于 I/O 密集型应用&…...

Salesforce 发布开源大模型 xGen-MM

xGen-MM 论文 在当今 AI 技术飞速发展的时代&#xff0c;一个新的多模态 AI 模型悄然崛起&#xff0c;引起了业界的广泛关注。这个由 Salesforce 推出的开源模型—— xGen-MM&#xff0c;正以其惊人的全能特性和独特优势&#xff0c;在 AI 领域掀起一阵旋风。那么&#xff0c;x…...

冒 泡 排 序

今天咱们单独拎出一小节来聊一聊冒泡排序昂 冒泡排序的核心思想就是&#xff1a;两两相邻的元素进行比较&#xff08;理解思路诸君可看下图&#xff09; 接下来我们上代码演示&#xff1a; 以上就是我们初步完成的冒泡排序&#xff0c;大家不难发现&#xff0c;不管数组中的元…...

采用先进的人工智能视觉分析技术,能够精确识别和分析,提供科学、精准的数据支持的智慧物流开源了。

智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本可通过边缘计算技术…...

wordpress 新建栏目/关键词优化哪家好

1.论述 1.1.获取计算机系统所有实际可用物理区域信息 计算机系统的物理区域并不是连续的&#xff0c;且有的物理区域映射到特定硬件内部区域以便实现特定功能。 对计算机系统的物理区域进行分页管理&#xff0c;首先&#xff0c;要获取所有离散的物理区域信息。 INT 15h, AXE…...

云端网站建设/湘潭网络推广

在JS中&#xff0c;为我们提供了三个包装类&#xff0c;通过这三个包装类&#xff0c;可以将基本数据类型的数据转换为对象 String() 可以将基本数据类型的字符串转换为String对象 Number() 可以将基本数据类型的数字转换为Number对象 Bolean() 可以将基本数据类型的布尔值转换…...

wordpress开发西瓜/哪个平台可以随便发广告

数据库系统的组成 硬件平台及数据库 软件 人员 硬件平台及数据库 数据库系统对硬件资源的要求 足够大的内存足够的大的磁盘或磁盘阵列等外部设备较高的通道能力&#xff0c;提高数据传送率 软件 数据库管理系统 支持数据库管理系统运行的操作系统 与数据库接口的高级语…...

个人房产查询系统网站官网/百度收录提交网站后多久收录

因为要讲座&#xff0c;随便写一下&#xff0c;等讲完有时间好好写一篇splay的博客。 先直接上题目然后贴代码&#xff0c;具体讲解都写代码里了。 参考的博客等的链接都贴代码里了&#xff0c;有空再好好写。 P2042 [NOI2005]维护数列 题目描述 请写一个程序&#xff0c;要求维…...

个人制作一个网站的费用/交换友情链接的方法

http://www.cnblogs.com/hh54188/archive/2011/04/09/1996469.html 动画队列解释 animate 必需的 params 参数定义形成动画的 CSS 属性。 可选的 speed 参数规定效果的时长。它可以取以下值&#xff1a;"slow"、"fast" 或毫秒。 可选的 callback 参数是动…...

免费云主机试用一年/上海网站营销seo方案

ing我们知道很多时候加在动词后面是表示进行时,但很多动词加ing也可以变成一个形容词或名词. 同样ed一般表过去式,但也能做形容词 ing后缀常用词 including 包含 according 相符的 依照 meeting 会议 training 训练 feeling 感觉 painting 绘画 interesting 有趣的 beg…...