贪心:
通过局部最优,推出整体最优。
自己手动模拟,如果模拟可行,就可以试一试贪心策略;如果不可行,可能需要动态规划。
验证可不可以用贪心算法:最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。
初步思路: min,max min在max前面,解决;否则,O(n^2)
答案思路:
买的一定是卖之前max,维护min买和max利润 (O(n))
12.7回想:根据卖出股票时间遍历,维护min买入和max收益,
有效避免了双重for循环(第i天买入,第j天卖)
class Solution {
public:
int maxProfit(vector<int>& prices) {
//买入是卖之前min的
int profit = 0;
int minNum = prices[0];
for(int i = 1;i<prices.size();i++){
profit = max(prices[i]-minNum,profit);
minNum = min(minNum,prices[i]);
}
return profit;
}
};