【Day24 LeetCode】贪心Ⅱ
一、贪心Ⅱ
1、买卖股票的最佳时机 II 122
这题第一想法是使用动态规划做,每天有两个状态,持有股票和非持有股票,每次计算这两个状态下的最优值。
class Solution {
public:int maxProfit(vector<int>& prices) {//表示当前 没有/有股票的两个状态int dp0 = 0, dp1 = -prices[0]; for(int i=1; i<prices.size(); ++i){int tmp = dp1;dp1 = max(dp1, dp0 - prices[i]);dp0 = max(dp0, tmp + prices[i]);}return dp0;}
};
贪心的做法就是 只要当前股票值会在明天上升,则在当前进行购买,在明天进行售卖获取利润。因为要求只能持有一只股票,即使price[i]到price[j]之间股票一直在涨,亦可将利润划分成 p r i c e [ j ] − p r i c e [ i ] = ( p r i c e [ j ] − p r i c e [ j − 1 ] ) + ( p r i c e [ j − 1 ] − p r i c e [ j − 2 ] ) + . . . + ( p r i c e [ i + 1 ] − p r i c e [ i ] ) price[j] - price[i] = (price[j]-price[j-1]) +(price[j-1]-price[j-2])+...+(price[i+1]-price[i]) price[j]−price[i]=(price[j]−price[j−1])+(price[j−1]−price[j−2])+...+(price[i+1]−price[i]),所以每天的正利润构成了最后的总利润。
class Solution {
public:int maxProfit(vector<int>& prices) {int ans = 0;for(int i=1; i<prices.size(); ++i)ans += max(prices[i]-prices[i-1], 0);return ans;}
};
这题采用动态规划的思路更容易想到一点。
2、跳跃游戏 55
思路:找到最大的跳跃范围,看能不能跳到终点。每次取当前点能跳的最远点作为跳跃范围,在这个合法的范围内不断更新最大范围。
class Solution {
public:bool canJump(vector<int>& nums) {int end = 0, n = nums.size();for(int i=0; i<n; ++i){if(i<=end)end = max(end, i+nums[i]);elsebreak;if(end >= n-1)return true;}return false;}
};
3、跳跃游戏Ⅱ 45
这题在上一题跳跃游戏的基础上需要找到最小跳跃次数,思路是:在当前这跳的范围内选择一个作为起点,可达终点最远。当遍历到当前这跳的边界,可是视为已经完成一跳,直到当前这跳范围已达最终终点。
class Solution {
public:int jump(vector<int>& nums) {// curEnd记录当前这一跳的范围终点,nxtEnd记录下一跳的最大范围终点int curEnd = 0, nxtEnd = 0; int n = nums.size(), ans = 0;for(int i=0; i<n; ++i){// 当前这一跳最大范围已达数组终点,结束跳跃if(curEnd >= n-1)break;// 在当前这一跳范围内的点,以此作为下一跳的起点,更新下一跳的最远范围终点nxtEnd = max(nxtEnd, i + nums[i]);if(i==curEnd){ // 完成当前这一跳++ans; // 完成这一跳,进入下一跳curEnd = nxtEnd; // 进入下一跳,更新当前跳的范围}}return ans;}
};
4、K次取反后最大化的数组和 1005
思路:先将数组从小到大排序,遇到负数且有次数就反转该负数,这样越小的负数反转得到的值越大。最后判断是否有次数剩余,如果剩余奇数次,则需要再进行一次反转,对哪个数进行反转最有利呢?有次数剩余的情况下一定会是数组内已经没有负数了,所以当然对最小值进行反转最有利。
class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {int n = nums.size();sort(nums.begin(), nums.end()); // 从小到大排序int i = 0;while(i<n && k>0){if(nums[i] < 0){ // 遇到负数反转nums[i] *= -1;--k;}++i;}int s = 0, MIN = INT_MAX;for(int num : nums){// 计算 数组和s += num;// 有k剩余 则需要找到数组的最小值if(k % 2)MIN = min(MIN, num);}// 有k剩余,则对数组和s减去2倍的数组最小值// 因为是要反转这个最小值,而s已经加过没反转的最小值,所以是2倍s += (MIN < INT_MAX ? -2 * MIN : 0); return s;}
};
二、写在后面
修改了后面两题代码,添加了更多注释。
相关文章:
【Day24 LeetCode】贪心Ⅱ
一、贪心Ⅱ 1、买卖股票的最佳时机 II 122 这题第一想法是使用动态规划做,每天有两个状态,持有股票和非持有股票,每次计算这两个状态下的最优值。 class Solution { public:int maxProfit(vector<int>& prices) {//表示当前 没有…...
vue3+elementPlus之后台管理系统(从0到1)(day3-管理员管理)
管理员管理 搭建管理员页面 在views中创建一个manager文件夹,并创建ManagerIndexView.vue、MangagerListView.vue、UserList.vue <!-- src/views/manager/ManagerIndexView.vue --> <template><!-- 作为一个占位符,用于渲染与当前 URL…...
上位机知识篇---ROS2命令行命令静态链接库动态链接库
文章目录 前言第一部分:ROS2命令行命令1. 基础命令(1)ros2 run(2)ros2 launch(3)ros2 node(4)ros2 topic(5)ros2 service(6࿰…...
2025/1/21 学习Vue的第四天
睡觉。 --------------------------------------------------------------------------------------------------------------------------------- 11.Object.defineProperty 1.在我们之前学习JS的时候,普通得定义一个对象与属性。 <!DOCTYPE html> <h…...
云计算、AI与国产化浪潮下DBA职业之路风云变幻,如何谋破局启新途?
引言 在近日举办的一场「云和恩墨大讲堂」直播栏目中,云和恩墨联合创始人李轶楠、副总经理熊军和欧冶云商数据库首席薛晓刚共同探讨了DBA的现状与未来发展。三位专家从云计算、人工智能、国产化替代等多个角度进行了深入的分析和探讨,为从业者提供了宝贵…...
Linux内核编程(二十一)USB驱动开发-键盘驱动
一、驱动类型 USB 驱动开发主要分为两种:主机侧的驱动程序和设备侧的驱动程序。一般我们编写的都是主机侧的USB驱动程序。 主机侧驱动程序用于控制插入到主机中的 USB 设备,而设备侧驱动程序则负责控制 USB 设备如何与主机通信。由于设备侧驱动程序通常与…...
模拟算法习题篇
在算法中,模拟是一种通过计算机程序来模拟现实世界中的过程或系统行为的方法。它的核心思想是根据题目给定的规则和逻辑,按照步骤细致地重现事件的发展流程,从而获得最终结果。 解题时如何使用模拟算法: 理解题目规则:…...
蓝桥杯真题 - 翻转 - 题解
题目链接:https://www.lanqiao.cn/problems/3520/learning/ 个人评价:难度 1 星(满星:5) 前置知识:无 整体思路 贪心,除了第一位跟最后一位,其它字符,每当 S [ i ] ≠…...
IP属地与视频定位位置不一致:现象解析与影响探讨
在数字化时代,IP属地和视频定位位置已成为我们获取网络信息、判断内容真实性的重要依据。然而,有时我们会发现,某些视频内容中展示的定位位置与其发布者的IP属地并不一致。这种不一致现象引发了广泛的关注和讨论。本文旨在深入剖析IP属地与视…...
管道符、重定向与环境变量
个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: https://blog.csdn.net/qq_52914969?typeblog 一、重定向 将命令和文件结合 标准输入重定向(STDIN,文件描述符为0):默认从键盘输入&am…...
可扩展性设计架构模式——开闭原则
1. 概述 在架构设计中,遵循开闭原则(Open/Closed Principle, OCP),代码应该“对扩展开放,对修改关闭”是实现可扩展性的关键。这个原则指导我们设计系统时,应使其对新增功能开放,而对现有代码的修改封闭。这…...
算法随笔_17: 回文数
上一篇: 算法随笔_16: 找出第k小的数对距离-CSDN博客 题目描述如下: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左&…...
计算机的错误计算(二百一十九)
摘要 大模型能确定 sin(2.6^10) 的符号吗?实验表明,大模型的计算、推理均有问题。另外,结论也是错的。 前面讨论的内容为自变量是 2.6^100的正弦,本节讨论自变量为 2.6^10的正弦(对于某些大模型,2.6^100似…...
React进阶之高阶组件HOC、react hooks、自定义hooks
React高级 高阶组件 HOC属性代理反向继承属性代理和反向继承的区别实例实例一实例二 HooksHooks APIuseState:useEffect:useLayoutEffect:useRef:useContext:useReducer:useMemouseCallback 自定义Hooks 拓展ÿ…...
【Pytest】基础到高级功能的理解使用
文章目录 第一部分:Pytest 简介1.1 什么是 Pytest?1.2 Pytest 的历史1.3 Pytest 的核心概念1.4 Pytest 的特点1.5 为什么选择 Pytest? 第二部分:Pytest 的基本使用2.1 安装 Pytest2.2 编写第一个测试用例2.2.1 创建一个简单的测试…...
RHCE实验详解
目录 实验分析 环境拓扑结构 项目需求 主机环境描述 实验步骤 一、密钥互信和主机名更改 二、DNS 三、NGINX 四、MARIADB 五、NFS 六、NTP 七、论坛服务 结果展示及痛点解答 实验分析 环境拓扑结构 项目需求 1. 172.25.250.101 主机上的 Web 服务要求提供 www.ex…...
备赛蓝桥杯之第十五届职业院校组省赛第二题:分享点滴
提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题࿰…...
MyBatis 注解开发详解
MyBatis 注解开发详解 MyBatis 支持使用注解来进行数据库操作。注解方式将 SQL 语句直接写在 Java 接口中,通过注解来完成 CRUD(增删改查)操作,省去了使用 XML 配置的繁琐步骤。这种方式适合简单项目或快速原型开发,因…...
Kivy App开发之UX控件VideoPlayer视频播放
kivy使用VideoPlayer控件实现视频播放,可以控制视频的播放,暂停,音量调节等功能。 在使用VideoPlayer视频播放器时,可以参考下表属性来设置其样式和触发事件。 属性说明source视频路径,默认为空state视频状态,值play,pause,stop,默认为stopthumbnail显示视频的缩略图…...
简单排序算法
异或运算及异或运算实现的swap方法 ^(异或): ^运算是计算机中的位运算,运算规则为相同为0,不同为1(也被称为无进位相加)。位运算处理效率比常规运算符效率更高。 异或运算遵循的法则: 0^N N N^N 0 异或运算…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
