【LeetCode+51nod】股票低买高卖N题
【121】Best Time to Buy and Sell Stock (2018年11月25日重新复习)
给一个数组代表股票每天的价格,只能有一次交易,即一次买入一次卖出,求最大收益。
题解:用一个变量维护此时的最大收益和最小成本。遍历数组求值。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int minPrice = INT_MAX;
int maxProfit = ;
for (auto ele : prices) {
minPrice = min(ele, minPrice);
maxProfit = max(maxProfit, (ele - minPrice));
}
return maxProfit;
}
};
2018年11月25日,这次一次 AC 了。
class Solution {
public:
int maxProfit(vector<int>& prices) {
const int n = prices.size();
if (n < ) {return ;}
int buy = prices[], sell = ;
int ret = ;
for (int i = ; i < n; ++i) {
sell = prices[i];
if (buy < sell) {
ret = max(sell - buy, ret);
} else {
buy = prices[i];
}
}
return ret;
}
};
【122】 Best Time to Buy and Sell Stock II (2018年11月25日复习)
这题是给了一个数组代表股票每天的价格,可以做任意次的交易,但是不能同时持有多支股票。(每次的操作方式只能是先买,然后卖了,再买。不能在卖了之前再次买入。)
题解:这题我是用了贪心,每次发现今天的价格比昨天的价格高,就在昨天买入,今天卖出。
class Solution {
public:
int maxProfit(vector<int>& prices) {
const int n = prices.size();
int ret = ;
for (int i = ; i < n; ++i) {
if (prices[i] - prices[i-] > ) {
ret += prices[i] - prices[i-];
}
}
return ret;
}
};
还可以用dp解答,dp通用一些。以后那些变种都是dp的变种。
【123】Best Time to Buy and Sell Stock III (2018年11月30日,复习)
给了一个数组代表每天股票的价格,只能做两次交易,问最大的盈利是多少。(还跟原来的条件是一样的,不支持同时持有多股票,每次操作方式都是先买,卖了,然后才能再买。)
题解:这题我用了类似动态规划这种做法,状态其实很简单,四个状态,分别代表第一次买入后的钱,第一次卖出后的钱,第二次买入后的钱,第二次卖出后的钱。最后这四个数可能都是负数,这个时候不买最好了。
class Solution {
public:
int maxProfit(vector<int>& prices) {
const int n = prices.size();
if (n == ) {return ;}
vector<int> g(, INT_MIN);
g[] = -prices[];
for (int i = ; i < n; ++i) {
g[] = max(g[], -prices[i]);
g[] = max(g[], g[]+prices[i]);
g[] = max(g[], g[]-prices[i]);
g[] = max(g[], g[]+prices[i]);
}
return max(, max(g[], g[]));
}
};
【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
【LeetCode+51nod】股票低买高卖N题的更多相关文章
- HDU6438 Buy and Resell 2018CCPC网络赛 -低买高卖-贪心经典题
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门 原题目描述在最下面. 出过很多次:5 ...
- Android 之低版本高版本实现沉浸式状态栏
沉浸式状态栏确切的说应该叫做透明状态栏.一般情况下,状态栏的底色都为黑色,而沉浸式状态栏则是把状态栏设置为透明或者半透明. 沉浸式状态栏是从android Kitkat(Android 4.4)开始出 ...
- K:leetcode 5381.查询带键的排列 这题简单,但我还能优化。精益求精,才是算法的乐趣所在!
前言: 本题来自leetcode第184场周赛的第二小题.以前参加过周赛,觉得很有趣.苦于最近一段时间比较忙就没坚持参加了(实际上是借口来着....),由于昨晚思考一些事情,导致睡不着,所以起得有点早 ...
- [LeetCode] Second Highest Salary 第二高薪水
Write a SQL query to get the second highest salary from the Employee table. +----+--------+ | Id | S ...
- leetcode 买卖股票问题
leetcode121 Best Time to Buy and Sell Stock 说白了找到最大的两组数之差即可 class Solution { public: int maxProfit(v ...
- 刚学习java时的笔记, 有点渣, 毕竟都是从低往高走
一片很有意义的论文: 写给那些在技术路上奔跑的人们!!!!! http://blog.csdn.net/xqhrs232/article/details/24885971 乱码处理 1.get处理 解 ...
- cpu使用率低负载高,原因分析
原因总结 产生的原因一句话总结就是:等待磁盘I/O完成的进程过多,导致进程队列长度过大,但是cpu运行的进程却很少,这样就体现到负载过大了,cpu使用率低. 下面内容是具体的原理分析:在分析负载为什么 ...
- LeetCode 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票. 示例 ...
- LeetCode 买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...
随机推荐
- Test 6.29 T1 预算方案
问题描述 "我需要你为我制订一个购物的方案.我将要为我的宫殿增置一些家具.有n 种备选家具,家具有主件和附件之分.在购买某个主件的附件之前,我必须先购买其对应的主件.某一主件的附件不会是另一 ...
- .HDF数据库与SQLSERVER / ORACLE的区别
无论ArcGIS的.gbd文件还是MapGIS的.hdf文件,都是数据库文件. 后缀是无意义的.有意义的是其中内在的逻辑和数据结构. https://zhidao.baidu.com/question ...
- 20180826(02)-Java集合框架
Java 集合框架 早在Java 2中之前,Java就提供了特设类.比如:Dictionary, Vector, Stack, 和Properties这些类用来存储和操作对象组. 虽然这些类都非常有用 ...
- mybatis获取数据库自增id
http://blog.csdn.net/dyllove98/article/details/8866357 http://www.iteye.com/problems/86864 insert标签中 ...
- django缓存优化(一)
在配置之前,先介绍一个实用的工具: 当我们进入虚拟环境,在shell中进行操作的时候,往往要导入django的各种配置文件: from django.x import xxxx 这时我们可以借助dja ...
- 组建MySQL集群的几种方案
组建MySQL集群的几种方案LVS+Keepalived+MySQL(有脑裂问题?但似乎很多人推荐这个)DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂 ...
- openpyxl模块简单入门
一.openpyxl简介和安装 python 读写 excel 有好多选择,但是,方便操作的库不多,在我尝试了几个库之后,我觉得两个比较方便的库分别是 xlrd/xlwt.openpyxl. 之所以推 ...
- redis centos集群搭建和java应用
1. 首先要ssh免密登录 redis集群,3台虚拟机,6个节点,每台机器2个节点一主一从. 192.168.132.154 c0192.168.132.156 c1192.168.132.155 c ...
- 将多个jpg文件以追加形式合并成一个文件_delphi教程 bmp 合并 http://www.west.cn/www/info/58058-1.htm
将多个jpg文件以追加形式合并成一个文件_delphi教程 作者:网友供稿 点击:0 西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!云服务器 ...
- DEDE网站地图优化技巧
DEDE网站地图优化技巧-把网站地图生成在系统根目录,利于搜索引擎收录相信恨多用DEDECMS做站的朋友,为避免将data目录内的东西随便外泄,在robots中将data目录屏蔽了,但是DEDE默认的 ...