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

贪心算法总结(2)

一、买卖股票的最佳时机

. - 力扣(LeetCode)

class Solution {
public:int maxProfit(vector<int>& prices) {int mini=INT_MAX;int ret=0;for(int&price:prices){//遍历的时候,我们随时去更新最小的值,然后让每一位数都来-最小值 更新利润,这里不能直接用最大值//因为最大值可能在最小值的左边ret=max(ret,price-mini);mini=min(price,mini);}return ret;}
};

二、买卖股票的最佳时机II 

. - 力扣(LeetCode)

解法1:双指针(重点掌握)

class Solution {
public:int maxProfit(vector<int>& p) {//只要是正收益 就交易 //双指针+贪心int ret=0,n=p.size();for(int i=0,j=0;i<n;){while(j+1<n&&p[j+1]>p[j]) ++j;ret+=p[j]-p[i];++j,i=j;}return ret;}
};

解法2:拆分交易

class Solution {
public:int maxProfit(vector<int>& p) {//拆分交易int ret=0,n=p.size();for(int i=1;i<n;++i)if(p[i]>p[i-1]) ret+=p[i]-p[i-1];return ret;}
};

 解法3:动态规划

class Solution {
public:int maxProfit(vector<int>& prices){//有两种状态,第i天结束处于买入状态(手上有股票,可卖)     第i天结束后处于交易状态(手上没有股票,可以买int n=prices.size();//创建两个dp表vector<int> f(n);//第i天结束后处于买入状态//情况1,前一天处于买入状态,啥也没干,还是处于买入状态f[i]=f[i-1]//情况2,前一天卖过,然后今天刚买     f[i]=g[i-1]-prices[i]auto g=f;//第i天结束后处于交易状态//情况1,前一天还是可交易状态,啥也没干 g[i]=g[i-1]//情况2.前一天处于买入状态,今天刚卖出一只股票,外加手续费 g[i]=f[i-1]+prices[i]-fee//初始化,f[0]=-prices[0];for(int i=1;i<n;++i){f[i]=max(f[i-1],g[i-1]-prices[i]);g[i]=max(g[i-1],f[i-1]+prices[i]);}return g[n-1];}
};

三、K次取反后的最大化数组和

. - 力扣(LeetCode)

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {//分类讨论 m表示负数的个数 //当m<=k 把前k大的负数都变成正数即可//m>k 时 先把所有的负数变成正数,然后看看k是奇数还是偶数//如果是偶数,直接返回总和,如果是奇数,还需要挑选最小的那个数进行取反int m=0,n=nums.size();for(auto e:nums) if(e<0) ++m;//开始进行分类讨论int ret=0;if(m>=k) {sort(nums.begin(),nums.end());for(int i=0;i<k;++i) ret+=-nums[i];for(int i=k;i<n;++i) ret+=nums[i];}else{int mini=INT_MAX;for(auto e:nums){ret+=abs(e);mini=min(mini,abs(e));}if((k-m)%2) ret-=2*mini;}return ret;}
};

四、按身高排序(下标数组排序)

. - 力扣(LeetCode)

解法2:哈希存下标映射

class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& h) {//解法1 创建一个新的二元数组,将身高和名字绑定,然后按照身高排序,再提取回来int n=names.size();map<int,string,greater<int>> hash;for(int i=0;i<n;++i)  hash[h[i]]=names[i];//然后提取出来vector<string> ret;ret.reserve(n);for(auto kv:hash) ret.emplace_back(kv.second);return ret; }
};

解法3:对下标排序(重要技巧)

class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& h) {//解法2 创建一个下标数组 对下标数组进行排序 然后找到原数组的信息int n=names.size();vector<int> index(n);for(int i=0;i<n;++i) index[i]=i;sort(index.begin(),index.end(),[&h](int i,int j){return h[i]>h[j];});vector<string> ret(n);for(int i=0;i<n;++i)ret[i]=names[index[i]];return ret;}
};

五、优势洗牌(田忌赛马策略)

. - 力扣(LeetCode)

class Solution {
public://如果比得过,就比,如果比不过 就干掉最强的那个vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {//对nums1进行升序排序 对nums2进行下标的排序int n=nums1.size();sort(nums1.begin(),nums1.end());vector<int> index(n);iota(index.begin(), index.end(),0); //用val的连续++初始化sort(index.begin(),index.end(),[&nums2](const int&i,const int&j){return nums2[i]<nums2[j];});//然后进行赛马 //用nums2存储最后的结果int left=0,right=n-1;for(auto&x:nums1)if(x>nums2[index[left]]) nums2[index[left++]]=x;   //如果我比你大 我就超越你else nums2[index[right--]]=x;return nums2;//交换论证法 更经常用的原因是  最优解可能是有多个的,所以我们可以把最优解调整成贪心解}
};

六、分发饼干

. - 力扣(LeetCode)

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {//先排序 满足的直接喂 不满足的就看看下一个孩子sort(g.begin(),g.end());sort(s.begin(),s.end());//双指针 int ret=0,n1=g.size(),n2=s.size();for(int i=0,j=0;i<n1&&j<n2;++i,++j){//找饼干while(j<n2&&s[j]<g[i]) ++j;if(j<n2) ++ret;}return ret;}
};

相关文章:

贪心算法总结(2)

一、买卖股票的最佳时机 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(vector<int>& prices) {int miniINT_MAX;int ret0;for(int&price:prices){//遍历的时候&#xff0c;我们随时去更新最小的值&#xff0c;然后让每一位…...

弘景光电:技术实力与创新驱动并进

在光学镜头及摄像模组产品领域&#xff0c;广东弘景光电科技股份有限公司&#xff08;以下简称“弘景光电”&#xff09;无疑是一颗耀眼的明星。自成立以来&#xff0c;弘景光电凭借其强大的研发实力、卓越的产品性能、精密的制造工艺以及严格的质量管理体系&#xff0c;在光学…...

2024年7月23日~2024年7月29日周报

目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议&#xff0c;并完成了初稿。 本周继续修改论文&#xff0…...

M3U8流视频数据爬虫

M3U8流视频数据爬虫 HLS技术介绍 现在大部分视频客户端都采用HTTP Live Streaming&#xff08;HLS&#xff0c;Apple为了提高流播效率开发的技术&#xff09;&#xff0c;而不是直接播放MP4等视频文件。HLS技术的特点是将流媒体切分为若干【TS片段】&#xff08;比如几秒一段…...

保护您的数字财富:模块化沙箱在源代码防泄露中的突破

在数字化浪潮中&#xff0c;企业面临着前所未有的数据安全挑战。源代码、商业机密、客户数据……这些宝贵的数字资产一旦泄露&#xff0c;后果不堪设想。SDC沙盒防泄密系统&#xff0c;以其卓越的技术实力和创新的解决方案&#xff0c;为企业提供了一个坚不可摧的安全屏障。 核…...

FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析

一、引言 AVIOContext是FFmpeg&#xff08;本文演示用的FFmpeg源码版本为5.0.3&#xff09;中的字节流上下文结构体&#xff0c;用来管理输入输出数据。打开一个媒体文件的时候&#xff0c;需要先把数据从硬盘读到缓冲区&#xff0c;然后会用到AVIOContext中的如下成员&#x…...

如何使用 API 查看极狐GitLab 镜像仓库中的镜像?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…...

软件-vscode-plantUML-IDEA

文章目录 vscode基础命令 实操1. vscode实现springboot项目搭建 &#xff08;包括spring data jpa和sqlLite连接&#xff09; PlantUMLIDEA下载及安装Eval Reset插件配置修改IDEA创建项目的默认目录IDEA配置gitIDEA翻译插件translationIDEA断点调试IDEA全局搜索快捷键不能使用代…...

ES6语法详解,面试必会,通俗易懂版

目录 Set的基本使用WeakSet 使用Set 和 WeakSet 区别内存泄漏示例&#xff1a;使用普通 Set 保存 DOM 节点如何避免这个内存泄漏MapWeakMap 的使用 Set的基本使用 在ES6之前&#xff0c;我们存储数据的结构主要有两种&#xff1a;数组、对象。 在ES6中新增了另外两种数据结构&a…...

CTFshow--Web--代码审计

目录 web301 web302 web303 web304 web305 web306 web307 web308 web309 web310 web301 开始一个登录框, 下意识sql尝试一下 发现 1 的时候会到一个 checklogin.php 的路径下, 但啥也没有 好吧, 这是要审计代码的 ,下载好源码, 开始审计 看了一下源码 , 应该就是sql…...

Java语言程序设计——篇十(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 接口介绍 接口概述接口定义接口的实现实战演练 &#x1f445;接口的继承实战演练实战演练 接口的类型常量实战演练 静态方法默认方法解决默认方…...

Qt对比MFC优势

从Qt小白到现在使用了有四年的时间&#xff0c;之前也搞过MFC,WinForm,基本上都是桌面的框架&#xff0c; 从难易程度看MFC>QT>WinForm; 运行的效率上来看MFC>QT>WinForm; 开发效率上WinForm>QT>MFC; 跨平台Qt首选&#xff1b; 界面的美观难易程度Qt>…...

RuntimeError: No CUDA GPUs are available

RuntimeError: No CUDA GPUs are available 目录 RuntimeError: No CUDA GPUs are available 【常见模块错误】 【解决方案】 解决步骤如下&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科…...

URL参数中携带中文?分享 1 段优质 JS 代码片段!

本内容首发于工粽号&#xff1a;程序员大澈&#xff0c;每日分享一段优质代码片段&#xff0c;欢迎关注和投稿&#xff01; 大家好&#xff0c;我是大澈&#xff01; 本文约 800 字&#xff0c;整篇阅读约需 1 分钟。 今天分享一段优质 JS 代码片段&#xff0c;在发送 ajax 请…...

sass的使用

一、变量 //声明一个变量 $highlight-color: #F90; .selected {border: 1px solid $highlight-color; }//编译后 .selected {border: 1px solid #F90; }二、导入 import "xxx.scss"三、混合器简单定义 通过mixin定义&#xff0c;通过include调用 // mixin.scss /…...

【足球走地软件】走地数据分析预测【大模型篇】走地预测软件实战分享

了解什么是走地数据&#xff1f; 走地数据分析&#xff0c;在足球赛事的上下文中&#xff0c;是一种针对正在进行中的比赛进行实时数据分析的方法。这种方法主要用于预测比赛中的某些结果或趋势&#xff0c;如总进球数、比分变化、球队表现等。 在足球走地数据分析中&#xf…...

现在有什么赛道可以干到退休?

最近&#xff0c;一则“90后无论男女都得65岁以后退休”的消息在多个网络平台流传&#xff0c;也不知道是真是假&#xff0c;好巧不巧今天刷热点的时候又看到一条这样的热点&#xff1a;现在有什么赛道可以干到退休&#xff1f; 点进去看了几条热评&#xff0c;第一条热评说的…...

c程序杂谈系列(职责链模式与if_else)

从处理器的角度来说&#xff0c;条件分支会导致指令流水线的中断&#xff0c;所以控制语句需要严格保存状态&#xff0c;因为处理器是很难直接进行逻辑判断的&#xff0c;有可能它会执行一段时间&#xff0c;发现出错后再返回&#xff0c;也有可能通过延时等手段完成控制流的正…...

前端开发技术之CSS(层叠样式表)

盒模型&#xff08;Box Model&#xff09; CSS盒模型描述了如何计算一个元素的总宽度和高度。 它包括以下几个部分&#xff1a; 1. 内容&#xff08;Content&#xff09;&#xff1a;元素的实际内容&#xff0c;比如文本或图片。 2. 内边距&#xff08;Padding&#xff09;&…...

go语言day20 使用gin框架获取参数 使用自定义的logger记录日志

Golang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客 目录 一、 从控制器中获取参数的几种形式 1&#xff09; 页面请求url直接拼接参数。 2&#xff09; 页面请求提交form表单 3&#xff09; 页面请求发送json数据&#xff0c;使用上下文对象c的BindJSON()方法接…...

【QuantDev必藏】:为什么92%的C++交易系统仍在用malloc——深度剖析jemalloc/tcmalloc/mimalloc在L3缓存穿透场景下的失效临界点

第一章&#xff1a;金融高频交易系统内存分配的底层挑战与现实困境在纳秒级竞争的金融高频交易&#xff08;HFT&#xff09;场景中&#xff0c;内存分配不再是语言运行时的“黑盒服务”&#xff0c;而是决定订单延迟、吞吐一致性与系统可预测性的关键路径。传统堆分配器&#x…...

OpenClaw+Phi-3-mini-128k-instruct:自动化代码审查系统

OpenClawPhi-3-mini-128k-instruct&#xff1a;自动化代码审查系统 1. 为什么需要个人级代码审查助手 作为独立开发者&#xff0c;我经常陷入这样的困境&#xff1a;在GitHub上提交PR后&#xff0c;要么苦等同事review&#xff0c;要么自己反复检查代码质量。传统CI工具只能做…...

告别低效查询!用SAP SE16H的‘公式’和‘分组统计’功能,5分钟搞定复杂报表数据准备

SAP SE16H高效数据加工&#xff1a;用内置公式与分组统计替代Excel计算 每次月底结账前&#xff0c;财务部的王敏总要熬夜处理几十张采购订单的统计报表。从SAP导出原始数据到Excel&#xff0c;用VLOOKUP匹配供应商信息&#xff0c;写SUMIFS公式按物料组汇总金额&#xff0c;最…...

掰开揉碎魔改claudecode后,我盯着 Claude Code 跑了一圈,终于看懂顶级 AI Agent是如何炼成的

开头先来一句狠的很多人以为&#xff0c;Claude Code 之所以强&#xff0c;是因为模型更聪明。但我把它运行时真正生效的 Payload 抓出来之后&#xff0c;结论反而更明确了&#xff1a;顶级 AI Agent 的差距&#xff0c;很多时候不在模型本身&#xff0c;而在它背后那套“怎么约…...

Kandinsky-5.0-I2V-Lite-5s图生视频实战教程:5秒短视频一键生成(RTX4090D友好)

Kandinsky-5.0-I2V-Lite-5s图生视频实战教程&#xff1a;5秒短视频一键生成&#xff08;RTX4090D友好&#xff09; 1. 快速认识Kandinsky-5.0-I2V-Lite-5s Kandinsky-5.0-I2V-Lite-5s是一款专为短视频创作设计的轻量级AI模型。它最大的特点就是简单高效——你只需要准备一张起…...

SkeyeVSS开发心得-VSS流播放与注意事项

本文是 VSS流播放详解 的配套开发笔记。 项目地址 https://github.com/openskeye/go-vss 1. 明确三个要点 POST /api/video/stream 只有一套 StreamResp 外壳&#xff0c;内里走哪路完全由 Device.AccessProtocol 决定。流媒体是否拉起来&#xff0c;不都是 StartRelyPull 的…...

如何设计高质量的API接口:终极完整指南与最佳实践

如何设计高质量的API接口&#xff1a;终极完整指南与最佳实践 【免费下载链接】InterviewGuide &#x1f525;&#x1f525;「InterviewGuide」是阿秀从校园->职场多年计算机自学过程的记录以及学弟学妹们计算机校招&秋招经验总结文章的汇总&#xff0c;包括但不限于C/C…...

2025_NIPS_RT V-Bench: Benchmarking MLLM Continuous Perception, Understanding and Reasoning through R

文章主要内容与创新点总结 一、主要内容 本文针对现有基准测试无法充分评估多模态大语言模型(MLLMs)在动态真实环境中持续感知、理解和推理能力的问题,提出了实时视频分析基准测试集RT V-Bench。该基准包含552个多样化视频(总时长167.2小时)和4631个高质量问答对,涵盖智…...

2026年,行业内热门GEO搜索优化公司口碑究竟如何?

你是否在为提升品牌在搜索引擎上的排名而烦恼&#xff1f;是否因高昂的优化成本和复杂的操作望而却步&#xff1f;又或者担心优化效果不佳&#xff0c;无法实现询盘转化&#xff1f;今天&#xff0c;我们就来深入探讨一下2026年热门的GEO优化软件&#xff0c;看看哪款能真正解决…...

OpenClaw长任务优化:Qwen3-32B本地接口降低Token消耗实测

OpenClaw长任务优化&#xff1a;Qwen3-32B本地接口降低Token消耗实测 1. 为什么需要关注长任务Token消耗 去年冬天&#xff0c;当我第一次用OpenClaw整理全年积累的2000多份PDF文档时&#xff0c;账单上的API费用让我倒吸一口凉气——这个简单的文件分类任务竟然消耗了价值30…...