Day 58 单调栈
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
vector<int> rst(temperatures.size());
vector<int> decsStk;
for (int i = 0; i < temperatures.size(); i++)
{
while (!decsStk.empty() && temperatures[decsStk.back()] < temperatures[i])
{
rst[decsStk.back()] = i - decsStk.back();
decsStk.pop_back();
}
decsStk.push_back(i);
}
return rst;
}
};
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
vector<int> decsStk;
unordered_map<int, int> table;
for (int i = 0; i < nums2.size(); ++i)
{
while (!decsStk.empty() && nums2[decsStk.back()] < nums2[i])
{
table[nums2[decsStk.back()]] = nums2[i];
decsStk.pop_back();
}
decsStk.push_back(i);
}
vector<int> rst(nums1.size(), -1);
for (int i = 0; i < nums1.size(); i++)
{
if (table.find(nums1[i]) != table.end())
{
rst[i] = table[nums1[i]];
}
}
return rst;
}
};