http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/
一天能进行一次交易,需要注意的是一次交易包含 购买,售出 两种行为
这样在每次上升自序列开始时 购买股票, 上升子序列结束时售出股票,这样就能获取到所有子序列的收益。
例如对于上升子序列1,2,3,4 ,有两种方案
一: 1买入, 4 售出,收益=3
二: 1买入,2 卖出并买入, 3 卖出并买入, 4 卖出 ,收益=3
这两种方案的收益是相同的。由上面这个例子也提供了另外一种思路:
贪心发:,基本思想是锁定一个低价,然后在价格升到局部最高点(即下一天的价钱就下降了)时候,
售出股票,注意处理最后一次的利润
class Solution {
public:
int maxProfit(vector
&prices) {
int max_profit = 0;
for(int i = 1; i < prices.size(); i++) {
if(prices[i] > prices[i-1]) max_profit += prices[i] - prices[i-1];
}
return max_profit;
}
};