这是道非常简单的题目,但是刚开始的时候我实在是想的太多了,基本的思想很简单,就是找到所有的上升子序列,将头尾的差值加起来就可以了。不过我最开始一直在考虑如何快速方便地找到上升子序列,结果将简单的问题复杂化。
所以这个问题就是,相邻两个数做差,后面的数大的话,这个差就是有效的。
所以这个问题就是,相邻两个数做差,后面的数大的话,这个差就是有效的。
class Solution {
public:
int maxProfit(vector<int> &prices) {
int res = 0;
for (int i = 1; i < prices.size(); ++i) {
int delta = prices[i] - prices[i - 1];
if (delta > 0)
res += delta;
}
return res;
}
};
http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/