西安火车站网站建设/互联网营销课程体系
一、买卖股票的最佳时机
. - 力扣(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)
一、买卖股票的最佳时机 . - 力扣(LeetCode) class Solution { public:int maxProfit(vector<int>& prices) {int miniINT_MAX;int ret0;for(int&price:prices){//遍历的时候,我们随时去更新最小的值,然后让每一位…...

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

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

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

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

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

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

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

ES6语法详解,面试必会,通俗易懂版
目录 Set的基本使用WeakSet 使用Set 和 WeakSet 区别内存泄漏示例:使用普通 Set 保存 DOM 节点如何避免这个内存泄漏MapWeakMap 的使用 Set的基本使用 在ES6之前,我们存储数据的结构主要有两种:数组、对象。 在ES6中新增了另外两种数据结构&a…...

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

Java语言程序设计——篇十(1)
🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿 接口介绍 接口概述接口定义接口的实现实战演练 👅接口的继承实战演练实战演练 接口的类型常量实战演练 静态方法默认方法解决默认方…...

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

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

URL参数中携带中文?分享 1 段优质 JS 代码片段!
本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿! 大家好,我是大澈! 本文约 800 字,整篇阅读约需 1 分钟。 今天分享一段优质 JS 代码片段,在发送 ajax 请…...

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

【足球走地软件】走地数据分析预测【大模型篇】走地预测软件实战分享
了解什么是走地数据? 走地数据分析,在足球赛事的上下文中,是一种针对正在进行中的比赛进行实时数据分析的方法。这种方法主要用于预测比赛中的某些结果或趋势,如总进球数、比分变化、球队表现等。 在足球走地数据分析中…...

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

c程序杂谈系列(职责链模式与if_else)
从处理器的角度来说,条件分支会导致指令流水线的中断,所以控制语句需要严格保存状态,因为处理器是很难直接进行逻辑判断的,有可能它会执行一段时间,发现出错后再返回,也有可能通过延时等手段完成控制流的正…...

前端开发技术之CSS(层叠样式表)
盒模型(Box Model) CSS盒模型描述了如何计算一个元素的总宽度和高度。 它包括以下几个部分: 1. 内容(Content):元素的实际内容,比如文本或图片。 2. 内边距(Padding)&…...

go语言day20 使用gin框架获取参数 使用自定义的logger记录日志
Golang 操作 Logger、Zap Logger 日志_golang zap-CSDN博客 目录 一、 从控制器中获取参数的几种形式 1) 页面请求url直接拼接参数。 2) 页面请求提交form表单 3) 页面请求发送json数据,使用上下文对象c的BindJSON()方法接…...

DHCP笔记
DHCP---动态主机配置协议 作用:为终端动态提供IP地址,子网掩码,网关,DNS网址等信息 具体流程 报文抓包 在DHCP服务器分配iP地址之间会进行广播发送arp报文,接收IP地址的设备也会发送,防止其他设备已经使用…...

TCP为什么需要四次挥手?
tcp为什么需要四次挥手? 答案有两个: 1.将发送fin包的权限交给被动断开发的应用层去处理,也就是让程序员处理 2.接第一个答案,应用层有了发送fin的权限,可以在发送fin前继续向对端发送消息 为了搞清楚这个问题&…...

MySQL 索引相关基本概念
文章目录 前言一. B Tree 索引1. 概念2. 聚集索引/聚簇索引3. 辅助索引/二级索引4. 回表5. 联合索引/复合索引6. 覆盖索引 二. 哈希索引三. 全文索引 前言 InnoDB存储引擎支持以下几种常见索引:BTree索引,哈希索引,全文索引 一. B Tree 索引…...

Neutralinojs教程项目实战初体验(踩坑指南),干翻 electron
Neutralinojs 项目实战初体验(踩坑指南),干翻 electron Neutralinojs 官方文档 卧槽卧槽,!这个年轻人居然用浏览器把电脑关机了_哔哩哔哩_bilibili正是在下 本教程搭建的是纯原生项目,没有和其它前端框架…...

【轻松拿捏】Java-List、Set、Map 之间的区别是什么?
List、Set、Map 之间的区别是什么? 一、List 二、Set 三、Map 🎈边走、边悟🎈迟早会好 一、List 有序性:List 保持元素的插入顺序,即元素按添加的顺序存储和访问。允许重复:List 可以包含重复的元素。…...

用户史订单查询业务
文章目录 概要整体架构流程技术细节小结 概要 在电商、金融、物流等行业中,用户历史订单查询是一项常见的业务需求。这项功能允许用户查看他们过去的交易记录,包括但不限于购买的商品、服务详情、交易金额、支付状态、配送信息等。对于企业而言…...

第8节课:CSS布局与样式——掌握盒模型与定位的艺术
目录 盒模型:网页布局的基础盒模型的属性盒模型的示例 定位:控制元素位置定位的类型定位的示例 实践:使用CSS布局创建响应式网页结语 CSS布局是网页设计中的基石,它决定了网页元素的排列和分布。盒模型和定位是CSS布局中的两个核心…...

electron 主进程和渲染进程
最近在整理electron 相关的项目问题,对自己来说也是温故知新,也希望能对小伙伴们有所帮助,大家共同努力共同进步。加油!!!! 虽然最近一年前端大环境不好,但是大家还是要加油鸭&#…...

redis的高可用及性能管理和雪崩
redis的高可用 redis当中,高可用概念更宽泛一些。 除了正常服务以外,数据量的扩容,数据安全。 实现高可用的方式: 1、持久化 最简单的高可用方法,主要功能就是备份数据。 把内存当中的数据保存到硬盘当中。 2、主…...

php基础语法
文章目录 1. PHP(1) 安装php 2. 基础语法(1) 格式(2) 输出语法(3) 注释(4) 变量(无变量类型自动识别)(5) 输入获取(6) 定界符(7) 换行 3. 基本数据类型(1) 字符串(2) 整数(3). 浮点数(4). boolean类型(5). 数组(6). null值 4. 运算符(1) 算术运算符(2) 比较运算符(3) 逻辑运算符…...