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() - ]);
}
};

最新文章

  1. java web学习总结(十四) -------------------JSP原理
  2. Mac shell 添加VPN 路由
  3. SqlServer索引及优化详解
  4. listview 设置数组为空
  5. 【Android】Android SDK Manager更新慢/失败的问题
  6. [转]仿World Wind构造自己的C#版插件框架——WW插件机制精简改造
  7. SQL SERVER中非聚集索引的覆盖,连接,交叉,过滤
  8. 一个好用且方便的FastCgi C++库 - FastCgi++
  9. js脚本同步、异步与延迟
  10. Java中String直接赋字符串和new String的区别
  11. jQuery实现按Enter键触发事件
  12. Echarts数据可视化series-graph关系图,开发全解+完美注释
  13. django项目微博第三方登录
  14. android开发环境配置以及测试所遇到的的问题
  15. (7)Why 30 is not the new 20
  16. 解题:WC 2018 州区划分
  17. haproxy-1.6.11 make 报错
  18. 存档格式选择--JSON
  19. HDU6058 Kanade&#39;s sum(思维 链表)
  20. 使用GSON来生成JSON数据

热门文章

  1. Java包装类、拆箱和装箱详解
  2. uwsgi/uWSGI/WSGI简介
  3. MySQL之单表查询练习
  4. RegExp对象的exec方法
  5. Hibernate详讲
  6. Canvas学习:globalCompositeOperation详解
  7. 前端单元测试环境搭建 Karma Jasmine
  8. Linux扩展根目录下的空间
  9. Android实现身份证拍摄框
  10. Jsp程序要在Tomcat下运行