题目:买卖股票的最佳时机 II
参考:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/solutions/12625/best-time-to-buy-and-sell-stock-ii-zhuan-hua-fa-ji/?envType=problem-list-v2&envId=91oI3WTD
对于连续上涨的情况,第一天买,最后一天卖,可以使得利润最大化,此时利润 profit 等于 p_n - p_1,等价于(p_n - p_n-1) + (p_n-1 - p_n-2) + …. + (p_2 - p_1),也就是说,可以将其分解为前一天买,下一天买,即每天都进行交易
对于连续下跌的情况,不进行任何交易(即利润为零)可以使得利润最大;
1int maxProfit(vector<int>& prices)
2{
3 int res = 0;
4 // 只遍历一遍数组
5 for(int i = 1; i < prices.size(); i++)
6 {
7 // 计算两天之间的利润
8 int temp = prices[i] - prices[i - 1];
9 // 只有当利润大于零时才记入总利润
10 if(0 < temp) res += temp;
11 }
12 return res;
13}
来源:语雀原笔记