day40

pwangikun / 2024-10-13 / 原文

每日温度

class Solution {
public:
vector dailyTemperatures(vector& temperatures) {
stack st;
vector answer(temperatures.size(), 0);
st.push(0);
for(int i = 1; i < temperatures.size(); ++i)
{
if(temperatures[i] <= temperatures[st.top()])
{
st.push(i);
}
else
{
while(!st.empty() && temperatures[i] > temperatures[st.top()])
{
answer[st.top()] = i - st.top();
st.pop();
}
st.push(i);
}
}
return answer;
}
};

下一个更大元素I
class Solution {
public:
vector dailyTemperatures(vector& temperatures) {
stack st;
vector answer(temperatures.size(), 0);
st.push(0);
for(int i = 1; i < temperatures.size(); ++i)
{
if(temperatures[i] <= temperatures[st.top()])
{
st.push(i);
}
else
{
while(!st.empty() && temperatures[i] > temperatures[st.top()])
{
answer[st.top()] = i - st.top();
st.pop();
}
st.push(i);
}
}
return answer;
}
};
下一个更大元素II
class Solution {
public:
vector nextGreaterElements(vector& nums) {
stack st;

    vector<int> ret(nums.size(), -1);
    if (nums.size() == 0) return ret;
    st.push(0);
    for(int i = 1; i < 2 * nums.size(); ++i)
    {
        int j = i % nums.size();
        if(nums[j] <= nums[st.top()])
        {
            st.push(j);
        }
        else
        {
            while(!st.empty() && nums[j] > nums[st.top()])
            {
                ret[st.top()] = nums[j];
                st.pop();
            }
            st.push(j);
        }
    }
    return ret;
}

};