一、题目
二、代码
//单调栈
//栈底->栈投 依次增大
class Solution
{
public:
vector<int> dailyTemperatures(vector<int>& temperatures)
{
int i;
stack<int> st;
vector<int> result(temperatures.size(),0);
st.push(0);
for(i=1;i<temperatures.size();i++)
{
if(temperatures[i]<temperatures[st.top()]) //大于
{
st.push(i);
}
else if(temperatures[i]==temperatures[st.top()]) //等于
{
st.push(i);
}
else //小于
{
while(!st.empty()&&temperatures[i]>temperatures[st.top()]) //比较数值
{
// std::cout<<" 进入 "<<std::endl;
result[st.top()]=i-st.top(); //坐标差
st.pop();
}
st.push(i);
}
}
return result;
}
};