【代码随想录|贪心算法02】

【NVIDIA Jetson Orin系列 - 安装NVIDIA SDK Manager】 NVIDIA Jetson Orin - 安装NVIDIA SDK Manager 阅读详情

122.买股票的最佳时机

题目链接https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii

好巧妙的一道题啊,做之前完全不会想到这种解法。

局部最优:收集每天正利润

全局最优:求得最大利润

这道题只让你返回最大的利润和,不用管是哪几个相加的 思路就是:

我要算的区间的总利润就等于那个区间上我每天对前一天的利润之和,所以我不如求出我我每天对前一天的利润之和,只要为正我就加上,为负只会越加越小那我就不要这个数了。

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

55.跳跃游戏

题目链接:55. 跳跃游戏 - 力扣(LeetCode)

局部最优:每覆盖一个元素,尽可能的增加它的覆盖范围。

全局最优:看整体的覆盖范围能否到达终点

比如

下标0 1 2 3 4

元素2 3 1 1 4

思路感觉就是先从下标0开始,遍历到它所能跳的覆盖范围,看它覆盖的元素能不能增加它的覆盖范围,比如上面这个,如果我从0跳4下就能跳到终点,0+4>=5-1(cover>=nums.size()-1)就说明可以到达最后一个下标。

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

45.跳跃游戏||

题目链接45. 跳跃游戏 II - 力扣(LeetCode)

局部最优:每一步都选覆盖范围内最大的那个点才计算步数

整体最优:到达终点时达到最小跳跃步数

因为题目保证能到达终点

我觉得的思路是我遍历到我现在能覆盖的范围(cur),到了覆盖范围cur的边缘了,我才跳一步,而且这一步的距离一定要是保存的最大距离next,然后我不断更新next的值,只要它到达终点就赶紧退出返回result的值。

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

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

题目链接:1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 

局部最优:把绝对值大的负数变为正数,剩余的K把最小的正数进行取反

全局最优:整个数组达到最大

这里要进行绝对值比较是因为不进行绝对值比较的话最小的正数就不会在数组的最右边,不好找,

比如,如果是【-4,-2,3,5】; 我第一遍操作所有的负数,变为【4,2,3,5】; 我现在要找到2在哪并操作,很麻烦。 但如果我一开始按照绝对值降序排列【5,-4,3,-2】; 第一遍对负数操作完就是【5,4,3,2】; 此时2依旧还是在数组末尾,操作index-1即可

class Solution {
public:
static bool cmp(int a,int b){//要把cmp定义为static 因为sort里面只能接受对象
    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){k为奇数就必须得乘一个就乘最小的那个正数
            nums[nums.size()-1]*=-1;
        }
        int result=0;
        for(int a:nums){
            result+=a;
        }
        return result;
    }
};

2025数学建模美赛C题完整建模思路——奥运会奖牌榜的模型 阅读详情

相关推荐

Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理

高可用性是指系统在面对故障(如数据库宕机、网络中断)时,能够快速恢复并继续提供服务。Sharding-JDBC 和 Sharding-Proxy 提供了多种机制支持高可用性,同时需要结合底层数据库的高可用方案(如 MySQL 主从复制、MHA)来实现。高可用性和集群管理是 Sharding-JDBC 和 Sharding-Proxy 在生产环境中成功应用的关键。本篇详细介绍了数据库高可用方案、Sharding-JDBC 的故障切换机制、Sharding-Proxy 的集群部署,以及分布式治理功能。

资深架构师分享:深入剖析软件架构,探讨云计算、微服务、大数据等前沿技术。分享实践经验,促进技术交流,共同构建卓越系统。 1393

贪心算法学习(02)(代码随想录)

本文通过6道经典贪心算法题目,探讨了覆盖类问题的解题思路。核心在于"局部最优选择实现全局最优":跳跃游戏类(55/45题)通过维护最大覆盖范围判断可达性和最少跳跃次数;区间类(452/435/56题)通过排序和边界调整实现最优覆盖或合并;字符串划分(763题)利用字母最远位置确定片段边界。所有题目都遵循贪心算法的本质:在每一步做出局部最优决策,最终达成全局最优解。代码实现均采用《代码随想录》的学习思路,突显贪心算法在覆盖类问题中的高效性。

2301_79545611的博客 1942

脑电数据预处理八:基于 ICA 的伪迹去除

摘要: 脑电图(EEG)数据分析中,伪迹(如眼电、心电、肌电)与脑电信号频谱重叠时,独立成分分析(ICA)成为有效工具。ICA通过盲源分离将混合信号分解为统计独立的成分,识别并移除伪迹后重建干净信号。MNE-Python实现步骤包括:数据预处理(滤波、坏导处理)、ICA分解、人工与自动结合识别伪迹成分、剔除后重建数据。实践建议强调人工检查的重要性,避免过度使用ICA,并保存模型以提高效率。该方法显著提升数据质量,为后续分析奠定基础。

qq_32516809的博客 1658

代码随想录第32天 | 贪心算法 part02

● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1:本题本质上是选取数组中差值最大的两个数(还是按顺序来的), 也就是nums[i+n] - nums[i]的最大值。 但是交易不只一次,也就是计算多次差值的和,因此涉及到 多次数 小差值 和 少次

techy649的博客 1054

STM32驱动2.8寸TFTLCD屏幕实战:从看懂原理图到点亮第一个像素(基于ILI9341)

本文详细介绍了如何使用STM32驱动2.8寸TFTLCD屏幕(基于ILI9341驱动芯片),从硬件连接到软件配置,包括FSMC接口设置、ILI9341初始化序列、坐标设置及基础绘图函数实现。文章还提供了常见问题排查指南和性能优化技巧,帮助开发者快速解决屏幕不亮等问题,并提升显示性能。

weixin_42665255的博客 267

非模式物种PySCENIC分析流程

外的物种想要做scenic分析的话, 可以使用同源基因转换后再进行分析, 将要分析的物种的gene Symbol转换为人、小鼠或者是果蝇的gene Symbol后进行分析。odiscus sinensis(中华鳖)的基因-细胞的矩阵,进行pyscenic分析的话,可参考以下示例。目前pyscenic分析支持的物种仅为人、小鼠和果蝇,其他物种暂时还没有相应的数据库,因。本教程基于Linux及服务。SCENIC转录因子分析。器中的Rstudio环境。例如我们有一个Pel。

weixin_47195452的博客 933

【代码随想录Day28】贪心算法Part02

【代码】【代码随想录Day28】贪心算法Part02。

Shayne 的博客 743

Jetson工业级应用指南:用Orin NX 16GB打造多摄像头AI质检系统

本文详细介绍了如何利用NVIDIA Jetson Orin NX 16GB构建高效的多摄像头AI质检系统,涵盖硬件选型、软件优化及产线部署全流程。通过100 TOPS的AI算力和多路视频处理能力,Orin NX在工业4.0时代展现出卓越的实时缺陷检测性能,特别适合嵌入式AI应用场景。

Pepper的专栏 307

代码随想录算法训练32 | 贪心算法 part02

本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解。本题解法很巧妙,大家可以看题思考一下,在看题解。122.买卖股票的最佳时机II。

Hello__Word___的博客 673

信息安全管理与评估赛题解析-单机取证(含环境)

链接:https://pan.baidu.com/s/1OMzIq884dW2vAiUp0k2Ppg。链接:https://pan.baidu.com/s/1i5daMqhD53wYeQ6hYzRK6Q。链接:https://pan.baidu.com/s/1QFAjdQZK4sJ-gGRP42XPKA。链接:https://pan.baidu.com/s/1BSXvqN2ZGCQXewgFULoeyQ。链接:https://pan.baidu.com/s/1g9zu5ngBz_KMjW1eBMkJAw。

Brucye 1834

多 Agent 之间如何通信和协调?OpenClaw 的 Gateway 在其中扮演什么角色?

多 Agent 之间如何通信和协调?OpenClaw 的 Gateway 在其中扮演什么角色?

我哎GIS博客 1665

代码随想录 day28 贪心算法part02

本题解法很巧妙,本题大家可以先自己思考一下然后再看题解,会有惊喜!

2401_88561446的博客 285

目前最强的价格行为技术分析AI!大A也能用!还免费!

有球友推荐了一个历史最强的价格行为技术分析AI工具,使用下来确实很惊艳,解决了 很多AI工具黑盒过程,难以回溯的问题,他的决策过程可解释,提供决策树、诊断结果、原始响应、调试信息和未来走势预期。用户能够看到模型为什么选择“做多、做空或不下单”。会检查置信度、入场条件、盈亏比、结构失效和冷却期。最大的优点不是“预测一定准确”,而是把主观的价格行为分析整理成了可重复、可解释、可校验、可持续跟踪的工程化流程。本文记录本项目在 Windows 上的实际部署与启动方法。

木头大左的博客 75

代码随想录|贪心算法|02分发饼干

假设for循环遍历饼干,那么在开始的时候9>=10无法满足,然后s逐渐向前,其所有的值都不满足>=10,这样子整个for循环都结束了最大的孩子都没喂饱,导致result=0。这里是两个数组的比较,但是没有必要用两个for循环,而是使用一个index来控制饼干数组的遍历,一旦满足条件了,index就减1,然后for循环用来控制小孩。这里index的范围条件我在第一次编写的时候都漏了,导致无法AC,需要注意。局部最优就是大饼干喂给大孩子,整体最优就是吃饱的孩子数量最多。

这里什么也没有 598

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

代码随想录day28 贪心算法part02

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。如果股票是[1,2,3],那我如果每天都买卖,和第一天买第三天卖的结果是一样的。所以只要第二天价格比本天高就买,否则不买。

Hoshinoharuka的博客 518

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

代码随想录D28 贪心算法02 Python

122. 买卖股票的最佳时机 II;55. 跳跃游戏;45. 跳跃游戏 II;1005. K 次取反后最大化的数组和

weixin_66889171的博客 567

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

代码随想录打卡Day32 | 贪心算法part02

在每一天,你可以决定是否购买和/或出售股票。返回 你能获得的 最大 利润。i 每次移动只能在 cover 的范围内移动,每移动一个元素,cover 得到该元素数值(新的覆盖范围)的补充,让 i 继续移动下去。给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围。不一定非要明确一次究竟跳几步,每次取最大的跳跃步数,这个就是可以跳跃的覆盖范围。这个范围内,别管是怎么跳的,反正一定可以跳过来。

lionelwhl的博客 258

代码随想录day32|贪心算法02

【代码】代码随想录day32|贪心算法02。

Lindsey_feiren的博客 374

代码随想录算法训练营 | 贪心算法 part02

较大的正数越多和越大,优先将绝对值大的负数取反;如果负数全部取反后,K次还大于0,将最小的非负数反复取反;:以 最小步数 增加最远能跳到的位置;每跳跃一步,在前一步跳跃覆盖的范围内寻找下一个可以跳到。:在价格趋势呈上涨的两端买入和卖出,保证利润为正值;从这两个位置中选取可以跳的更远的一个下标作为新的其实位置;:最后更新的最远可以跳到的位置是否可以到达数组的最后一个下标。:到达数组最后一个下标位置的最小跳跃次数。:计算所有局部最优的和,求得最大利润。位置的下标,作为该步跳跃的起始位置;:最远能跳到的位置,

Fern_v的博客 749

代码随想录算法训练营Day32|贪心算法02

贪心算法,注意解题思路 122. 买卖股票的最佳时机 II 55. 跳跃游戏 45. 跳跃游戏 II

weixin_57654532的博客 407

代码随想录算法训练营day 32|第八章 贪心算法 part02

还要注意一旦跳到最后一个点,就不需要往后跳了,所以最后一个点的射程多少不重要,i的范围保证在倒数第二个点(最后一个点之前的点都需要考虑射程范围来计算最远点),有可能最后一步的最大射程已经超过坐标范围了,但那不重要,重要的是何时更新这一步的最远点,之所以考虑倒数第二个点,是因为题目只道可达最后一点,但具体也有可能恰好是倒数第二个点到的最后一个点,那样就会更新这一步最远射程了,就算做一步了。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。122.买卖股票的最佳时机II。

mrmobi的博客 605

学习笔记@代码随想录:贪心算法part02

【代码】学习笔记@代码随想录:贪心算法part02。

qq_40357993的博客 149

代码随想录算法训练营 贪心算法part02

对于连续上涨交易日: 设此上涨交易日股票价格分别为 p1,p2,...,pn ,则第一天买最后一天卖收益最大,即 pn−p1;等价于每天都买卖,即 pn−p1=(p2−p1)+(p3−p2)+...+(pn−p(n−1))​。遍历整个股票交易日价格列表 price,并执行贪心策略:所有上涨交易日都买卖(赚到所有利润),所有下降交易日都不买卖(永不亏钱)。设 tmp 为第 i-1 日买入与第 i 日卖出赚取的利润,即 tmp = prices[i] - prices[i - 1];最后的步数就是最少步数。

m0_63297917的博客 115

【代码随想录】d32-贪心算法-part02-python

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润。

weixin_43513566的博客 219

代码随想录算法训练营第24天 | 第八章 贪心算法 part02

第八章 贪心算法 part02122. 买卖股票的最佳时机 II 55. 跳跃游戏 45. 跳跃游戏 II 1005. K 次取反后最大化的数组和 学习了lambda函数

zxjiaya的博客 845

73代码随想录---贪心算法02

122买股票的最佳时机2,55跳跃游戏,45跳跃游戏2,1005K次取反后最大化的数组和

weixin_48268093的博客 300
上一篇: 【代码随想录|贪心算法01】
下一篇: 【代码随想录|贪心算法03】
mazo_command
博客等级 码龄2年 275粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值