力扣121题 “买卖股票的最 佳时机”
1、题目描述(难度 简单)
样例:
数据范围
2、题目解析
方法一:用两个变量记录当前股票最小价格和,如果当前卖掉的最大利润,然后遍历数组的时候不断更新,最后输出的最大利润则是题目答案。c++代码如下:
class Solution {
public:int maxProfit(vector<int>& prices) {int minprice = int(1e9); // 当前遇到的最小价格int maxprofit = 0; // 当前的最大利润for (auto price : prices){maxprofit = max(maxprofit, price - minprice); // 更新当前最大利润minprice = min(minprice, price); // 更新当前最小价格}return maxprofit;}
};
方法二:采用dp,动态规划,用一个数组记录当天卖掉能得到的最大利润,dp[i]表示在第i天卖掉的最大获利。dp[i]取值需要看dp[i - 1],有两种情况,情况一,dp[i-1] == 0,表示前一天没有卖或者之前没有买,如果prices[i]>prices[i-1]则dp[i]取差值,否则为0;情况二,也需要比较prices[i]与prices[i-1]的关系。代码如下:
class Solution {
public:int maxProfit(vector<int>& prices) {int max = 0;int dp[100001]; // dp[i]表示在当天卖出的最大收益dp[0] = 0; // 第一天买第一天卖利润为0for(int i = 1;i < prices.size();++i){if(dp[i - 1] == 0) // 前面一天没有卖或者前面没有买if(prices[i] > prices[i - 1])dp[i] = prices[i] - prices[i - 1];elsedp[i] = 0;else{ //if(prices[i] > prices[i - 1])dp[i] = dp[i - 1] + prices[i] - prices[i - 1];else{int t = dp[i - 1] - (prices[i - 1] - prices[i]);dp[i] = 0 > t ? 0 : t;}}if(max < dp[i])max = dp[i];}return max;}
};
(题目来源 ledcode官方,本人水平有限,若有误,请评论区多多指教,若有侵权,请联系本人删除)
力扣121题 “买卖股票的最 佳时机”相关推荐
- 力扣121题买卖股票的最佳时机 简单容易明白
博主最近在力扣上做算法题,一天一道,可以跟着我来练习,有啥不会的可以留言,或者不理解力扣上面哪道可以进行留言.有啥不会的题也可以留言,仅限于简单与中等难度的. 愿我们变的越来越好 有啥不明白的评论区留 ...
- 《LeetCode力扣练习》第121题 买卖股票的最佳时机 Java
<LeetCode力扣练习>第121题 买卖股票的最佳时机 Java 一.资源 题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价 ...
- 买卖股票的最佳时机——力扣121题
买卖股票的最佳时机--力扣121题 暴力解法 从前往后,不断将元素之间进行两两比较(类似冒泡排序中),然后不断更新出maxProfit的值.例如数组[7,1,5,3,6,4]中,从7开始,则7 -&g ...
- 力扣-309最佳买卖股票时机含冷冻期(dp)
力扣-309最佳买卖股票时机含冷冻期 1.题目 309. 最佳买卖股票时机含冷冻期 给定一个整数数组prices,其中第 prices[i] 表示第i天的股票价格 . 设计一个算法计算出最大利润.在满 ...
- 力扣 -- 309. 最佳买卖股票时机含冷冻期
题目链接:309. 最佳买卖股票时机含冷冻期 - 力扣(LeetCode) 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴. 参考代码: class Sol ...
- (dp) 力扣309. 最佳买卖股票时机含冷冻期 思路
题目链接309. 最佳买卖股票时机含冷冻期 这一题的思路是在原本买卖股票的基础上添加一个冷冻期,即为修改dp条件.先贴出代码: class Solution {public:int maxProfit ...
- LeetCode简单题之买卖股票的最佳时机
题目 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格. 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票.设计一个 ...
- 买卖股票的zui佳时机
1.买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格,只能选择 某一天 买入这只股票,并选择在未来的某一个不同的日子 卖出该股 ...
- leetcode 714. 买卖股票的最 佳时机含手续费 medium
leetcode 714. 买卖股票的最佳时机含手续费 medium 题目描述: 解题思路: 手续费,可以在买入扣,也可以在卖出的时候扣,只不过应该是第0天初始化,而不再是第-1天.否则可能值越界 ...
最新文章
- 2014目标!!!!
- 2022年跨境卖家如何布局海外市场?东南亚“钱”景可观
- linux 硬软链接区别
- Googletest 实现简要分析
- linux-shell命令之mount【挂载命令】
- [蓝桥杯]字符串对比-模拟
- C/C++ ltoa函数 - C语言零基础入门教程
- tina中信号带宽_如何评测示波器带宽
- Python练习:百分制到五级制的转换
- 008_MAC 终端使用技巧
- LayaAir HttpRequest 网络访问
- ssh 遍历IPS 进行连接
- 利用键盘钩子捕捉linux键盘动作,利用键盘钩子捕获Windows键盘动作
- 关于mac 和其它osx系统添加 微软雅黑字体 适用于安装字体报错或者安装失败
- win10虚拟机下载安装流程
- 计算机公式与函数乘法,excel里减法函数是哪个?-excel函数公式乘法
- 如何免费下载论文资料
- Win10应用设计的那些事儿
- 利用FILTER特性优化SQL
- 手把手教你快应用接入微信H5网页支付