Leetcode 买卖股票的最佳时机 II
一开始以为是DP,一直往上面想,怎么都只能想到是O(n²)的复杂度。后来一想,总感觉是有钱赚马上就卖掉就好了,但是以为题意是当天卖了不能再买,转不过弯来,所以卡了好久。
思路:如果prices[i+1] > prices[i],就在第i天买然后在第i+1天卖出即可。不断统计返回。
class Solution { public: int maxProfit(vector<int>& prices) { int ans = 0; for(int i = 1; i < prices.size(); ++i) { if(prices[i] > prices[i - 1]) ans += prices[i] - prices[i - 1]; } return ans; } };
如果题目规定了当天卖出后不能买,会有影响吗?答案是否定的,因为我们上面这样确保了一个时间段只有一个股票在买卖,当天卖后可以再买其实就是相当于连续罢了,依然符合题意。