【121】Best Time to Buy and Sell Stock (2018年11月25日重新复习)

给一个数组代表股票每天的价格,只能有一次交易,即一次买入一次卖出,求最大收益。

题解:用一个变量维护此时的最大收益和最小成本。遍历数组求值。

 1 class Solution {
 2 public:
 3     int maxProfit(vector<int>& prices) {
 4         int minPrice = INT_MAX;
 5         int maxProfit = 0;
 6         for (auto ele : prices) {
 7             minPrice = min(ele, minPrice);
 8             maxProfit = max(maxProfit, (ele - minPrice));
 9         }
10         return maxProfit;
11     }
12 };

View Code

2018年11月25日,这次一次 AC 了。

 1 class Solution {
 2 public:
 3     int maxProfit(vector<int>& prices) {
 4         const int n = prices.size();
 5         if (n < 2) {return 0;}
 6         int buy = prices[0], sell = 0;
 7         int ret = 0;
 8         for (int i = 1; i < n; ++i) {
 9             sell = prices[i];
10             if (buy < sell) {
11                 ret = max(sell - buy, ret);
12             } else {
13                 buy = prices[i];
14             }
15         }
16         return ret;
17     }
18 };

View Code

【122】 Best Time to Buy and Sell Stock II (2018年11月25日复习)

这题是给了一个数组代表股票每天的价格,可以做任意次的交易,但是不能同时持有多支股票。(每次的操作方式只能是先买,然后卖了,再买。不能在卖了之前再次买入。)

题解:这题我是用了贪心,每次发现今天的价格比昨天的价格高,就在昨天买入,今天卖出。

 1 class Solution {
 2 public:
 3     int maxProfit(vector<int>& prices) {
 4         const int n = prices.size();
 5         int ret = 0;
 6         for (int i = 1; i < n; ++i) {
 7             if (prices[i] - prices[i-1] > 0) {
 8                 ret += prices[i] - prices[i-1];
 9             }
10         }
11         return ret;
12     }
13 };

View Code

还可以用dp解答,dp通用一些。以后那些变种都是dp的变种。

【123】Best Time to Buy and Sell Stock III (2018年11月30日,复习)

给了一个数组代表每天股票的价格,只能做两次交易,问最大的盈利是多少。(还跟原来的条件是一样的,不支持同时持有多股票,每次操作方式都是先买,卖了,然后才能再买。)

题解:这题我用了类似动态规划这种做法,状态其实很简单,四个状态,分别代表第一次买入后的钱,第一次卖出后的钱,第二次买入后的钱,第二次卖出后的钱。最后这四个数可能都是负数,这个时候不买最好了。

 1 class Solution {
 2 public:
 3     int maxProfit(vector<int>& prices) {
 4         const int n = prices.size();
 5         if (n == 0) {return 0;}
 6         vector<int> g(4, INT_MIN);
 7         g[0] = -prices[0];
 8         for (int i = 1; i < n; ++i) {
 9             g[0] = max(g[0], -prices[i]);
10             g[1] = max(g[1], g[0]+prices[i]);
11             g[2] = max(g[2], g[1]-prices[i]);
12             g[3] = max(g[3], g[2]+prices[i]);
13         }
14         return max(0, max(g[1], g[3]));
15     }
16 };

View Code

【188】 Best Time to Buy and Sell Stock IV

【309】 Best Time to Buy and Sell Stock with Cooldown

【714】 Best Time to Buy and Sell Stock with Transaction Fee

转载于:https://www.cnblogs.com/zhangwanying/p/9360841.html

【LeetCode+51nod】股票低买高卖N题相关推荐

  1. 51nod 2206 低买高卖codeforces867E Buy Low Sell High 贪心+优先队列

    考虑股票市场,一共有n天. 对于第i天,B君知道股票的价格是每单位a[i]元 在每一天,B君可以选择买入一个单位的股票,卖出一个单位的股票,或者什么都不做. 刚开始B君有无穷多的钱,但是没有任何股票. ...

  2. 2022-6-5 括号之价,最长配对,梦中岛之路,小Biu的旅行,最小正子段和,小b和排序,顺子,重排列得到2的幂,重排列,和为K的倍数,低买高卖,小b删列

    1. 括号之价 [栈] 小Y上数据结构课的时候摸鱼,听到老师在讲用栈做括号匹配,于是乎边随意写了一个合法的括号序列.但是光是写括号太无聊了,他现在想知道这个括号序列的价值.他是这样定义一个括号序列的价 ...

  3. python股票网格交易法详解_股票最全“低买高卖”网格交易大法,值得收藏!

    网格交易法,可以简单理解为在既定网格中实行"跌买涨卖".首先需要制定一个[网格系统],主要包括网格格数.网格密度.最大压力价格和最小支撑价格四大要素.当标的价格跌破一个网格密度时, ...

  4. 唯一做到“低买高卖”的指标——KDJ,值得散户读10遍!

    一.何为KDJ? 随机指标KDJ是以最高价.最低价及收盘价为基本数据进行计算,得出的K值.D值和J值分别在指标的坐标上形成的一个点,连接无数个这样的点位,就形成一个完整的.能反映价格波动趋势的KDJ指 ...

  5. 一分钟学会看k线图_1分钟学会看K线请笑纳70种经典K线组合形态,绝对干货,轻松低买高卖!...

    (本文由公众号越声攻略(yslc688)整理,仅供参考,不构成操作建议.如自行操作,注意仓位控制和风险自负.) K线是最真实的盘面语言,不同的形态有不同的含义,是广大操盘手必备的交易决策工具,也是广大 ...

  6. 往哪里看低买高卖和利润之间

    如果你认为你只outlayed 500美元的你自己的钱最初你可以看到你刚交了100%回报你的钱.你的500美元已经变成了一个500美元的开放利润.请牢记在心,交易成本并没有被包括在这个例子.现在你可以 ...

  7. kdj超卖_一个判断股票超买超卖现象的指标——KDJ,简单明了,准确且省心

    KDJ是一种指示"超买超卖"的指标,跟MACD不同,这类指标的最大特点是有上下的界限. KDJ指标,是由K,D,J三根线,以及0-100的数轴线组成的,公式我就不写了,参数一般是( ...

  8. [Leetcode] 买卖股票合集(动态规划)

    写完这套题,再搞一台时光机,财务自由不是梦(Doge) ================================== 相关题目链接 121 买卖股票的最佳时机 122 买卖股票的最佳时机 II ...

  9. 脑力风暴之小毛驴历险记(3)---低进高出的小鸡(上)

    极富盛名的面试题 此时恰逢双节将至,到处多多少少都有一点的气氛,虽不至于欢天喜地,逢面就谈论的节日计划到处都能听到的.小毛驴初来乍到,倒也渐渐熟悉了此地风俗.今天闲了下来,几块月饼下肚,便觉得有点胃胀 ...

最新文章

  1. MySQL高可用之mysql-mmm环境搭建
  2. 0121 - 开始学习 EOS 编程
  3. VMware Workstation创建独立网络
  4. oracle 三层嵌套查询,oracle 三层嵌套分页查询
  5. Android LinearLayout
  6. 计算机教师资格考试试题,全国教师资格考试信息技术练习题(二)
  7. 2021中国新物业服务发展白皮书
  8. 编程学习好去处:35 个快速学习的编程网站
  9. 259 [LeetCode] 3Sum Smaller 三数之和较小值
  10. 数据从mysql迁移至oracle时知识点记录(一)
  11. 各种数据库的连接字符串
  12. Pycharm设置默认UTF8编码格式
  13. Raki的读paper小记:Named Entity Recognition as Dependency Parsing
  14. 电路设计中的防爆设计原理与注意事项分析
  15. 进制转换函数 Java
  16. 微信公众号迁移办理流程及公证书办理方法
  17. Java有序数组——原地去重——不使用额外空间
  18. Android—调用高德地图显示定位蓝点
  19. linux测试读写的工具,Linux 下的硬盘读写速度测试工具
  20. 使用关键字like进行模糊查询

热门文章

  1. P1616 疯狂的采药(python3实现)--80分
  2. 小学奥数 7827 质数的和与积 python
  3. avg最多用多少列 mysql_MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)
  4. 无线网卡dns服务器没有响应,无线网卡上不去网怎么设置dns
  5. php培训js重要么,php何以被戏称为“世界上最好的语言”?请看它与js的对比!...
  6. java hashmap 常用方法_Java的HashMap中的常用方法总结
  7. Qt学习笔记-自绘时钟
  8. 动易php,动易数据转成dedecms的php程序
  9. 惠普打印机换硒鼓图解_佳能2900打印机硒鼓加粉图解教程,旅行诗人俊仔拆硒鼓加粉系列2...
  10. c语言形式参数若为b 4,2016年计算机二级c语言题库