暴力法,时间O(n^2):
执行用时:1220 ms
class Solution {
public:
int maxProfit(vector<int>& prices) {
int sz=prices.size();
int max=0;int t;
for(int i=0;i<sz;i++)
{
for(int j=i+1;j<sz;j++)
{
if(prices[j]>prices[i]+max)
{
max=prices[j]-prices[i];
}
}
}
return max;
}
};
一次遍历法:
执行用时 : 8 ms, 在Best Time to Buy and Sell Stock的C++提交中击败了98.77% 的用户
内存消耗 : 9.5 MB, 在Best Time to Buy and Sell Stock的C++提交中击败了37.14% 的用户
class Solution {
public:
int maxProfit(vector<int>& prices) {
int sz=prices.size();
if(sz==0) return 0;
int max=0;
int minv=prices[0];
for(int i=0;i<sz;i++)
{
if(prices[i]<minv) minv=prices[i];
if(prices[i]>minv+max)
{
max=prices[i]-minv;
}
}
return max;
}
};
再优化一点点:
纪念一下第一次超过100%的。。。
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size()==0) return 0;
int max=0;
int minv=prices[0];
for(int i=0;i<prices.size();i++)
{
if(prices[i]<minv) minv=prices[i];
else if(prices[i]>minv+max)
{
max=prices[i]-minv;
}
}
return max;
}
};