Best Time to Buy and Sell Stock
2016-05-23 10:28
274 查看
Say you have an array for which the ith element is the price of a given stock on day i.
If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
思路:一个数组,每个元素代表第i天的股票价格。最多只能交易一次,也就是买进一次,卖出一次。在整个过程找到最小值和最大值,且让最小值的所在的位置在最大值的前面,那么两者之差就是最大的收益了。
方法一:初始最小值设置minRes为prices[0],最大收益res计为0,遍历一遍数组,每一个prices[i](i>=1)和minRes比较,算出当前的最小值,而后prices[i]-minRes和res比较记录下当前最大的收益。整个数组遍历一遍,就求得了最大的收益。
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size()<2)
return 0;
int minRes=prices[0];
int res=0;
for(int i=1;i<prices.size();i++)
{
if(prices[i]<minRes)
minRes=prices[i];
res=res<prices[i]-minRes?prices[i]-minRes:res;
}
return res;
}
};
方法二:求最大的prices[i]-prices[i-1]的连续子数组最大和
class Solution {
public:
int maxProfit(vector<int>& prices) {
//计算prices[i]-prices[i-1]求最大的子段和
if(prices.size()<2)
return 0;
int res=0;
int cur;
for(int i=1;i<prices.size();i++)
{
if(cur<0)
cur=0;
cur+=prices[i]-prices[i-1];
res=res<cur?cur:res;
}
return res;
}
};
If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
思路:一个数组,每个元素代表第i天的股票价格。最多只能交易一次,也就是买进一次,卖出一次。在整个过程找到最小值和最大值,且让最小值的所在的位置在最大值的前面,那么两者之差就是最大的收益了。
方法一:初始最小值设置minRes为prices[0],最大收益res计为0,遍历一遍数组,每一个prices[i](i>=1)和minRes比较,算出当前的最小值,而后prices[i]-minRes和res比较记录下当前最大的收益。整个数组遍历一遍,就求得了最大的收益。
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size()<2)
return 0;
int minRes=prices[0];
int res=0;
for(int i=1;i<prices.size();i++)
{
if(prices[i]<minRes)
minRes=prices[i];
res=res<prices[i]-minRes?prices[i]-minRes:res;
}
return res;
}
};
方法二:求最大的prices[i]-prices[i-1]的连续子数组最大和
class Solution {
public:
int maxProfit(vector<int>& prices) {
//计算prices[i]-prices[i-1]求最大的子段和
if(prices.size()<2)
return 0;
int res=0;
int cur;
for(int i=1;i<prices.size();i++)
{
if(cur<0)
cur=0;
cur+=prices[i]-prices[i-1];
res=res<cur?cur:res;
}
return res;
}
};
相关文章推荐
- hibernate实体对象的三种状态:自由状态,持久状态,游离状态.
- HDU 1171 母函数或者01背包变形
- blender手册快捷键和操作技巧七
- DedeCMS常用SQL语句收录
- Java List转Map
- JavaScript正则表达式下之相关方法
- 自动释放池autoreleasepool
- leetcode 17. Letter Combinations of a Phone Number
- 弹性盒布局(FlexBox)
- HTTP Live Streaming直播(iOS直播)技术分析与实现
- windows下基于Eclipse的Hadoop应用开发环境配置
- 一般各类模具开模周期
- java从指定路径获取指定文件
- 在Docker下搭建Spark+HDFS集群
- 线程池的原理
- C#-using用法详解
- Android Studio 配置JNI和NDK开发环境
- listview保存并恢复之前位置的方法
- java压缩文件
- Other CSDN博客积分规则和获取积分方法