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