leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown
2024-10-04 21:47:49
121. Best Time to Buy and Sell Stock
题目的要求是只买卖一次,买的价格越低,卖的价格越高,肯定收益就越大
遍历整个数组,维护一个当前位置之前最低的买入价格,然后每次计算当前位置价格与之前最低价格的差值,获得最大差值即为结果
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.empty())
return ;
int min_num = prices[];
int profit = ;
for(int i = ;i < prices.size();i++){
min_num = min(min_num,prices[i]);
if(prices[i] > min_num)
profit = max(profit,prices[i] - min_num);
}
return profit;
}
};
122.Best Time to Buy and Sell Stock II
可以买任意次,所以只要当前的价格比之前的一个多,就买卖,这样最多
class Solution {
public:
int maxProfit(vector<int>& prices) {
int res = ;
for(int i = ;i < prices.size();i++){
if(prices[i] > prices[i-])
res += prices[i] - prices[i-];
}
return res;
}
};
309. Best Time to Buy and Sell Stock with Cooldown
https://www.cnblogs.com/grandyang/p/4997417.html
https://blog.csdn.net/qq508618087/article/details/51671504
注意题目的注释:you must sell the stock before you buy again,也就是说不能买了又买,卖了又卖,只能买一次再卖一次
用buy、sell两个数组表示当前位置以buy、sell操作结尾的最大收入,以buy为例,当前状态只可能来自两种情况:一、这一位置不做任何操作,就是不买也不卖 二、这一位置买,那之前的状态就是i-2的时候卖出了东西
初始化的时候注意0、1都要初始化,因为i-2,从2开始的循环。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int length = prices.size();
if(length <= )
return ;
vector<int> buy(length+,);
vector<int> sell(length+,);
buy[] = -prices[];
for(int i = ;i <= length;i++){
buy[i] = max(buy[i-],sell[i-] - prices[i-]);
sell[i] = max(sell[i-],buy[i-] + prices[i-]);
}
return max(buy[length],sell[length]);
}
};
714. Best Time to Buy and Sell Stock with Transaction Fee
https://www.cnblogs.com/grandyang/p/7776979.html
class Solution {
public:
int maxProfit(vector<int>& prices, int fee) {
vector<int> buy(prices.size(),);
vector<int> sell(prices.size(),);
buy[] = -prices[];
for(int i = ;i < prices.size();i++){
buy[i] = max(buy[i-],sell[i-] - prices[i]);
sell[i] = max(sell[i-],buy[i-] + prices[i] - fee);
}
return max(buy[prices.size() - ],sell[prices.size() - ]);
}
};
最新文章
- java web学习总结(十四) -------------------JSP原理
- Mac shell 添加VPN 路由
- SqlServer索引及优化详解
- listview 设置数组为空
- 【Android】Android SDK Manager更新慢/失败的问题
- [转]仿World Wind构造自己的C#版插件框架——WW插件机制精简改造
- SQL SERVER中非聚集索引的覆盖,连接,交叉,过滤
- 一个好用且方便的FastCgi C++库 - FastCgi++
- js脚本同步、异步与延迟
- Java中String直接赋字符串和new String的区别
- jQuery实现按Enter键触发事件
- Echarts数据可视化series-graph关系图,开发全解+完美注释
- django项目微博第三方登录
- android开发环境配置以及测试所遇到的的问题
- (7)Why 30 is not the new 20
- 解题:WC 2018 州区划分
- haproxy-1.6.11 make 报错
- 存档格式选择--JSON
- HDU6058 Kanade&#39;s sum(思维 链表)
- 使用GSON来生成JSON数据