1 买卖股票的最佳时机
//单调队列
class Solution {
public:
int maxProfit(vector<int>& prices) {
int maxPro = 0;
do
{
if (prices.size() < 2)
break;
deque<int> dq;
prices.push_back(-1);//sentinel,保证前面的数据全部出队
dq.push_back(prices[0]);
for(int i=1;i<prices.size();++i)
{
while (!dq.empty() && prices[i] < dq.back())
{
maxPro = std::max(maxPro, dq.back() - dq.front());
dq.pop_back();
}
dq.push_back(prices[i]);
}
} while(0);
return maxPro;
}
};
2
3