暴力解法
class Solution {
public:
int maxProfit(vector<int>& prices) {
int ans = 0;
for (int i=0; i<prices.size(); ++i)
for (int j=i+1; j<prices.size(); ++j)
ans = max(ans, prices[j] - prices[i]);
return max(0, ans);
}
};
就出现了如下所示的悲剧:
时间复杂度为O(n^2),数据过多时会超出时间限制。一整个傻了,拿着暴力解法修修改改了好多次,也不知道改了些啥期待出现一个通过的奇迹。然后开始想别的办法,一次遍历,美美地一次通过。
一次遍历
class Solution {
public:
int maxProfit(vector<int>& prices) {
int min_price=INT_MAX;
int max_profit=0;
for(int i=0;i<prices.size();i++){
if(prices[i]<min_price) min_price=prices[i];
if((prices[i]-min_price)>max_profit) max_profit=prices[i]-min_price;
}
return max_profit;
}
};