面试题:股票的最大利润
2018-02-04 23:27
597 查看
假设吧某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?例如,一只股票在某些时间节点的价格为{9,11,8,5,7,12,16,14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。
思路:如果在扫描到数组中的第i个数字时,只要我们能够记住之前的i-1个数字中的最小值,就能算出在当前价位卖出时可能得到的最大利润。
int MaxDiff(const int* numbers,unsigned length)
{
if(numbers==nullptr&&length<2)
return 0;
int min=numbers[0];
int maxDiff=numbers[1]-min;
for(int i=2;i<length;++i)
{
if(numbers[i-1]<min)
min=numbers[i-1];
int currentDiff=numbers[i]-min;
if(currentDiff>maxDiff)
maxDiff=currentDiff;
}
return maxDiff;
}
思路:如果在扫描到数组中的第i个数字时,只要我们能够记住之前的i-1个数字中的最小值,就能算出在当前价位卖出时可能得到的最大利润。
int MaxDiff(const int* numbers,unsigned length)
{
if(numbers==nullptr&&length<2)
return 0;
int min=numbers[0];
int maxDiff=numbers[1]-min;
for(int i=2;i<length;++i)
{
if(numbers[i-1]<min)
min=numbers[i-1];
int currentDiff=numbers[i]-min;
if(currentDiff>maxDiff)
maxDiff=currentDiff;
}
return maxDiff;
}
相关文章推荐
- [面试]给你一串股票价格,找出买点和卖点,使得利润最大。(Amazon 面试题)
- leetcode_122. Best Time to Buy and Sell Stock II 多次买卖股票,求交易的最大利润
- LeetCode-714:Best Time to Buy and Sell Stock with Transaction Fee (带有抛售费用的股票最大利润) -- medium
- [LeetCode]121. Best Time to Buy and Sell Stock(求近期股票能获得的最大利润)
- 给你一串股票价格,找出买点和卖点,使得利润最大。
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 携程校招2017编程题之股票最大利润
- 股票最大利润
- 说你有一个数组,其中第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润,最多可以完成两个交易。
- (LeetCode)Best Time to Buy and Sell Stock -- 求股票买卖的最大利润
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 求股票的最大利润
- 买股票最大利润
- 股票买卖之多次交易最大利润
- 2017滴滴出行面试题 n 张桌子吃饭的最大利润
- 给你一串股票价格,找出买点和卖点,使得利润最大
- LeetCode - 股票交易的最大利润
- 剑指Offer-63:股票的最大利润
- 面试题38:股票最大收益问题
- 第四章 最大子数组问题(股票最大收益) C++实现 算法导论