题目描述如上,第一遍做的时候,暂时没有别的思路,所以暴力求解,循环遍历,代码如下
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n=(int)prices.size(),ans=0;
int i,j;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
ans=max(ans,prices[j]-prices[i]);
}
}
return ans;
}
};
但写完知道肯定这么做复杂度太高了,思考有没有更好的解法。
答案这里给出的重点在于一次遍历,使用了for (int price : prices),将prices中每一个赋值给变量price,这样一来在计算最大利润的时候,maxprofit = max(maxprofit, price - minprice);就可以确保price在minprice之后
代码如下: