[贪心算法]买卖股票的最佳时机 买卖股票的最佳时机Ⅱ K次取反后最大化的数组和 按身高排序 优势洗牌(田忌赛马)
1.买卖股票的最佳时机

暴力解法就是两层循环,找出两个差值最大的即可。 优化:在找最小的时候不用每次都循环一遍,只要在i向后走的时候,每次记录一下最小的值即可
class Solution {
public:int maxProfit(vector<int>& prices) {int n=prices.size();int ret=0;for(int i=0,prevMin=INT_MAX;i<n;i++)//i是卖的那一天{//1.先更新结果ret=max(ret,prices[i]-prevMin);//2.更新最小值prevMin=min(prices[i],prevMin);}return ret;}
};
2.买卖股票的最佳时机Ⅱ


只需要在每次上升到最高点的时候卖掉即可,这样+起来的总和就是最高利润;
- 当prices[j+1]>prices[j] 时,就让j++
- 走到prices[j+1]<prices[j]就让,i++,j=i 继续向后寻找,直到出现prices[j+1]>prices[j]
class Solution {
public:int maxProfit(vector<int>& prices) {int n=prices.size();int ret=0;for(int i=0;i<n;i++){int j=i;while(j+1<n && prices[j+1]>prices[j])j++;ret+=prices[j]-prices[i];i=j;}return ret;}
};
3.K次取反后最大化的数组

我们设m是整个数组中负数的个数,那么就根据m和k的大小进行分类讨论
- m>k (先排序)反转前k个数,再相加
- m==k 把所有的数都当成正数加起来
- m<k
1.当k-m是偶数时,就和m==k情况相同2.当k-m是奇数时,把绝对值最小的那个数变成负数即可
class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {int m = 0;int minElm = INT_MAX;for (int i = 0; i < nums.size(); i++) {if (nums[i] < 0)m++;minElm = min(minElm, abs(nums[i]));}int ret = 0;// 分类讨论if (m > k) {sort(nums.begin(), nums.end());for (int i = 0; i < k; i++) {ret += abs(nums[i]);}for (int i = k; i < nums.size(); i++) {ret += nums[i];}} else if (m == k) {for (int i = 0; i < nums.size(); i++)ret += abs(nums[i]);} else {if ((k - m) % 2 == 0) // 偶数{for (int i = 0; i < nums.size(); i++)ret += abs(nums[i]);}else{for (int i = 0; i < nums.size(); i++)ret += abs(nums[i]);ret=ret-2*minElm;}}return ret;}
};
4.按身高排序

- 创建一个下标数组
- 仅需对下标数组排序(根据身高进行排序规则的改变)
- 根据下标找到对应的字符串
class Solution {
public:vector<string> sortPeople(vector<string>& names, vector<int>& heights) {//创建一个数组下标int n=heights.size();vector<int> v(n);for(int i=0;i<n;i++)v[i]=i;//重写sort的比较方法sort(v.begin(),v.end(),[&](int i,int j){return heights[i]>heights[j];});//通过下表找到响应的字符串vector<string> ret;for(int i:v){ret.push_back(names[i]);}return ret;}
};
优势洗牌(田忌赛马)

排序(贪心)
- 最差的能比过就直接比
- 比不过就去跟对面最大的比,废物利用最大化
步骤:
先对两个数组排序,然后用贪心的思想去排序,这样出来的结果和题目的实例是不一样的;
原因就在于题目的nums2没有排序,所以我们就要用到身高那一题的思想用下标数组来解决,
创建一个index数组,数组的排序规则就是比较nums2中的大小,然后再index数组中创建一个left和right用来记录最大值和最小值
class Solution {
public:vector<int> advantageCount(vector<int>& nums1, vector<int>& nums2) {int n=nums2.size();vector<int> ret(n);//存放结果vector<int> index(n);//下标数组for(int i=0;i<n;i++){index[i]=i;}sort(nums1.begin(),nums1.end());//下标数组排序sort(index.begin(),index.end(),[&](int p1,int p2){return nums2[p1]<nums2[p2];});//记录index的左右两边int left=0,right=n-1;for(int i=0;i<n;i++){//贪心:比得过就比,比不过就跟最大的比if(nums1[i]>nums2[index[left]]){ret[index[left++]]=nums1[i];}else{ret[index[right--]]=nums1[i];}}return ret;}
};
相关文章:
[贪心算法]买卖股票的最佳时机 买卖股票的最佳时机Ⅱ K次取反后最大化的数组和 按身高排序 优势洗牌(田忌赛马)
1.买卖股票的最佳时机 暴力解法就是两层循环,找出两个差值最大的即可。 优化:在找最小的时候不用每次都循环一遍,只要在i向后走的时候,每次记录一下最小的值即可 class Solution { public:int maxProfit(vector<int>& p…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring MVC 的核心组件:DispatcherServlet 的工作原理
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Dispat…...
第J3周:DenseNet121算法实现01(Pytorch版)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: PyCharm 框 架: Pytorch (二)具体步骤…...
webrtc3A算法
使用ubuntu18.04 选择webrtc_audio_processing v0.3 下载地址 https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/tree/master git clone 完 编译 # Initialise into the build/ directory, for a prefixed install into the # install/ directory meson …...
让“树和二叉树”埋在记忆土壤中--性质和概念
Nice to meet your! 目录 树的介绍: 树的创建: 二叉树的概念和结构: 二叉树的存储结构: 树的介绍: 概念和结构: 不知你们是否在现实中看见过分为两个叉的枯树,大概长这样: 那…...
git clone项目报错fatal: fetch-pack: invalid index-pack output问题
前情回顾:git项目放在公司服务器上面,克隆等操作需要连接VPN才能操作。由于项目比较大,网速比较慢,克隆项目经常出现fetch-pack: invalid index-pack output。在网上查找各种解决方法。也就这一种有点效果。仅供参考,不…...
Spring Boot整合SSE实现消息推送:跨域问题解决与前后端联调实战
摘要 本文记录了一次完整的Spring Boot整合Server-Sent Events(SSE)实现实时消息推送的开发过程,重点分析前后端联调时遇到的跨域问题及解决方案。通过CrossOrigin注解的实际应用案例,帮助开发者快速定位和解决类似问题。 一、项…...
【工具分享】vscode+deepseek的接入与使用
目录 第一章 前言 第二章 获取Deepseek APIKEY 2.1 登录与充值 2.2 创建API key 第三章 vscode接入deepseek并使用 3.1 vscode接入deepseek 3.2 vscode使用deepseek 第一章 前言 deepseek刚出来时有一段时间余额无法充值,导致小编没法给大家发完整的流程&…...
康谋方案 | AVM合成数据仿真验证方案
随着自动驾驶技术的快速发展,仿真软件在开发过程中扮演着越来越重要的角色。仿真传感器与环境不仅能够加速算法验证,还能在安全可控的条件下进行复杂场景的重复测试。 本文将分享如何利用自动驾驶仿真软件配置仿真传感器与搭建仿真环境,并对…...
Linux内核IPv4路由选择子系统
一、基本知识 1.具体案例:直连路由 结构fib_nh表示下一跳,包含输出网络设备、外出接口索引等信息。 有两个以太网局域网 LAN1 和 LAN2,其中 LAN1 包含子网 192.168.1.0/24,而 LAN2 包含子网 192.168.2.0/24。在这两个 LAN 之…...
NWAFU 生物统计实验二 R语言版
#1 setwd(修改为你的工作路径或桌面路径) feed_types <- c("A", "B", "C") weight_gain_means <- c(36.8, 34.9, 21.3) weight_gain_sds <- c(2.4, 2.7, 6.6) weight_gain <- rnorm(3, mean weight_gain_means, sd weight_gain_sd…...
Thinkphp指纹识别
识别ThinkPHP框架(指纹) 1.ioc判断 /favicon.ico 2.报错 /1 然后使用工具梭哈...
【AVRCP】蓝牙AVRCP协议中的L2CAP互操作性要求深度解析
目录 一、L2CAP互操作性要求(针对AVRCP) 1.1 核心概念 1.2 AVRCP对L2CAP的增强需求 1.3 关键机制解析 1.4 浏览通道优化配置 1.5 实际应用场景与解决方案 二、通道类型与配置 2.1. 通道类型限制 2.2 PSM字段规范 2.3. 实现意义 3.4. 实际应用…...
剑指 Offer II 111. 计算除法
comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20111.%20%E8%AE%A1%E7%AE%97%E9%99%A4%E6%B3%95/README.md 剑指 Offer II 111. 计算除法 题目描述 给定一个变量对数组 equations 和一个实数值数组 values 作…...
掌握 WRF/Chem 模式:突破大气环境研究技术瓶颈的关键
技术点目录 第一部分、WRF-Chem模式应用案例和理论基础第二部分、Linux环境配置及WRF-CHEM第三部分、WRF-Chem模式编译,排放源制作第四部分、WRF-Chem数据准备(气象、排放、初边界条件等),案例实践第五部分、模拟结果提取、数据可…...
linux性能监控的分布式集群 prometheus + grafana 监控体系搭建
prometheusgrafana分布式集群资源监控体系搭建 前言一、安装 prometheus二、在要监控的服务器上安装监听器三、prometheus服务器配置四、grafana配置大屏五、创建Linux监控看板五、监控windows服务器注意事项 前言 Prometheus 是一个开源的 分布式监控系统 和 时间序列数据…...
数字化转型 2.0:AI、低代码与智能分析如何重塑企业竞争力?
引言:数字化转型进入2.0时代 在过去的十几年里,企业的数字化转型(1.0)主要围绕信息化和自动化展开,例如引入ERP、CRM等系统,提高办公效率,减少人为失误。然而,随着市场竞争加剧&…...
柔性PZT压电薄膜触觉传感器在人形机器人的应用
柔性PZT压电薄膜声阻抗与人体组织匹配好,具有可弯曲性,可以贴附在非平整物体表面进行使用;而且具有受力后易弯曲的特点,器件的输出信号强,可用于穿戴产品,比如可以制作多路脉搏传感器用于智能多通道脉诊仪&…...
基于SpringBoot的“校园招聘网站”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“校园招聘网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统整体功能图 局部E-R图 系统首页界面 系统注册…...
基于FPGA的DDS连续FFT 仿真验证
基于FPGA的 DDS连续FFT 仿真验证 1 摘要 本文聚焦 AMD LogiCORE IP Fast Fourier Transform (FFT) 核心,深入剖析其在 FPGA 设计中的应用。该 FFT 核心基于 Cooley - Tukey 算法,具备丰富特性,如支持多种数据精度、算术类型及灵活的运行时配置。文中详细介绍了其架构选项、…...
由LAC自动建立L2TP实验
一、实验拓扑: 二、实验配置 1.LAC的配置 基础配置: [LAC]int g 0/0/0 [LAC-GigabitEthernet1/0/0]ip address 192.168.0.1 24 [LAC]int g 1/0/0 [LAC-GigabitEthernet1/0/0]ip address 10.1.1.254 24 [LAC-GigabitEthernet1/0/0]int g1/0/1 [LAC-GigabitEthernet1/0/1]ip ad…...
内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析
目录 1. Cobalt Strike 在什么情况下会构建内网代理? 2. Cobalt Strike 构建内网代理的主要作用和目的是什么? 3. Cobalt Strike 如何构建内网代理?需要什么条件和参数? 条件 步骤 参数 4. Cobalt Strike 内网代理能获取什…...
[AI速读]混合语言IP集成:挑战与高效解决方案
在现代SoC(系统级芯片)设计中,IP(知识产权模块)复用是提升开发效率的关键。然而,当设计涉及多种硬件描述语言(如SystemVerilog、VHDL、SystemC)时,如何高效集成不同语言的IP模块成为一大难题。本文将从实际设计场景出发,探讨混合语言IP集成的核心挑战,并介绍一套方法…...
利用ffmpeg库实现音频Opus编解码
一、编译与环境配置 libopus库集成 需在编译FFmpeg时添加--enable-libopus参数,编译前需先安装libopus源码并配置动态库路径。最新FFmpeg 7.1版本默认支持Opus的浮点运算优化和VBR/CVBR模式。 多平台兼容性 Opus支持Windows/Linux/macOS平台࿰…...
SAP FAGLL03 追加并显示描述字段
目录 1、新建一个结构2、操作FAGLPOSX结构3、新建一个BADI 1、新建一个结构 1.1、先在SE11中新建一个结构:ZZADD_FIELDS_FAGL,把我们要显示的描述字段放在这个结构中 2、操作FAGLPOSX结构 2.1、在FAGLPOSX结构中选择Append Structure,把我…...
Linux Vim 寄存器 | 从基础分类到高级应用
注:本文为 “vim 寄存器” 相关文章合辑。 英文引文,机翻未校。 中文引文,略作重排。 未整理去重,如有内容异常,请看原文。 Registers 寄存器 Learning Vim registers is like learning algebra for the first ti…...
Ubuntu版免翻墙搭建BatteryHistorian
摘要 昨天安装了一个翻墙版本的很不好用,主要是网络不稳定,故于是换了一个免翻墙的docker镜像。但是发现还是很难用。又安装了一个window版本的免翻墙的BatteryHistorian。明天再分享下Windows的免翻墙的BatteryHistorian步骤。 安装好Docker了就直接d…...
Django Rest Framework 创建纯净版Django项目部署DRF
描述创建纯净版的Django项目和 Django Rest Framework 环境的部署 一、创建Django项目 1. 环境说明 操作系统 Windows11python版本 3.9.13Django版本 V4.2.202. 操作步骤(在Pycharm中操作) 创建Python项目drfStudy、虚拟环境 虚拟环境中安装 jdangopip install django==4.…...
深度洞察:DeepSeek 驱动金融行业智能化转型变革
该文章为软件测评,不是广告!!!! 目录 一.金融行业的智能化转型浪潮 二.DeepSeek的核心技术剖析 1.DeepSeek 模型的金融智慧 2.实时联网搜索:把握金融市场脉搏 3.RAG 能力:铸就精准金…...
面试题精选《剑指Offer》:JVM类加载机制与Spring设计哲学深度剖析-大厂必考
一、JVM类加载核心机制 🔥 问题5:类从编译到执行的全链路过程 完整生命周期流程图 关键技术拆解 编译阶段 查看字节码指令:javap -v Robot.class 常量池结构解析(CONSTANT_Class_info等) 类加载阶段 // 手动加载…...

