1 贪心算法
这是一道很不像用贪心求解的题,因为里面有最优子结构,但贪心依然可以操作,只是细节需要把控好,这是难点
class Solution {
public:
int maxProfit(vector<int>& prices, int fee) {
int money = 0;
int minPrice = 0;
for (int i = 0; i < prices.size(); i++) {
if (i == 0)
minPrice = prices[0];
// 1.保留最小价格(卖出股票)
else if (prices[i] < minPrice) minPrice = prices[i];
// 2.遇到有净利润的高价就接收收益(依然持有股票)
else if (prices[i] > minPrice + fee) {
money += prices[i] - minPrice - fee;
minPrice = prices[i] - fee; // [高价-(低价-fee)]-fee = 高价 - 低价
}
}
return money;
}
};
复制