一. 題目描述
Say you have an array for which the i-th element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
二. 題目分析
該題是買賣股票的第二題。題目給出的基本信息沒什麼變化,與第一題不同的是的,允許進行任意次數的買賣,但必須保證買賣一次後才能進行第二次操作。繼續分析會發現,這實際上是求股價數組所有上升段的和。
三. 示例代碼
#include
#include
using namespace std;
class Solution {
public:
int maxProfit(vector &prices) {
int result = 0;
int i = 0;
int len = prices.size();
if(len <= 1) return 0;
for(i = 1; i < len; ++i)
{
if (prices[i] > prices[i - 1])
result += prices[i]-prices[i - 1];
}
return result;
}
};
四. 小結
與該題相關的題目還有好幾道。後續更新…