Description:
Example 1:
Example 2:
Solution (C++):
后续更新
其他类似的题目可参考:
- LeetCode-122. Best Time to Buy and Sell Stock II
- LeetCode-714. Best Time to Buy and Sell Stock with Transaction Fee
- LeetCode-309. Best Time to Buy and Sell Stock with Cooldown
算法分析:
这道题和我之前做过的一道题LeetCode-122. Best Time to Buy and Sell Stock II是一个系列的。当时不太懂题目的意思,现在明白了,就是说,这个数列是一只股票在第0天、第1天、第2天······第n天的价格。这道题的要求是我们买卖一次,然后要获得最大利润。那么其实就是要找到数列中差别最大的两个数,而且第一个数小,第二个数大。
那么具体的解法就是。假如现在是第i天。之前0~i天的股票价格中,最低价是minp。那么今天卖股票的利润就是prices[i]-minp.那么我们在每一天都和最大利润sell比较。自然就可以获得最大利润了。
程序分析:
程序没啥多说点。有一点:INI_MAX与INI_MIN这两个常量:
INT_MIN = -2^31
INT_MAX = 2^31 - 1
这两个数分别表示int型最大数与最小数。32位运算器下。以后就不用写9999999了。
还有一点,有一个Error的地方就是,我初始化minp是通过:
minp=prices[0];
来完成的,但这样系统报错。后来改成99999999就没报错了。所以初始化还是以常量为好。