Say you have an array for which the ith 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).
分析:当纯数字分析不清楚的时候。採用数形结合。
本题求的是波浪线中上升段的和。这种话就比較好攻克了。
class Solution {
public:
int maxProfit(vector<int> &prices) {
if(prices.size() < 2) return 0;
int ret = 0;
for(int i = 0; i < prices.size() - 1; i++) {
if(prices[i] < prices[i+1])
ret += prices[i+1] - prices[i];
}
return ret;
}
};
链表或数组迭代时。考虑初始情况,特别是 i = 0 和 i = 1的情况