我要是說我只想到了n2的算法,我肯定給會被自己氣死
這道題根本不算動態規劃,遍歷的時候每次記下之前最小的股票值是多少,最大的股票價格是多少,沒多一次就更新一下這兩個值。
#include <unordered_map>
#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;
int maxProfit(vector<int>& prices) {
if(prices.empty() || 1==prices.size())
return 0;
int maxx = -1;
int minn = prices[0];
for(int i=1; i<(int)prices.size();++i)
{
int temp = 0;
if(prices[i]>minn)
{
temp = prices[i] - minn;
maxx =max(temp,maxx);
}
minn = min(minn,prices[i]);
}
return max(0,maxx);
}
int main(void)
{
int a[]={7,1,5,3,6,4};
vector<int>b(begin(a),end(a));
cout<< maxProfit(b)<<endl;
return 0;
}