LeetCode 739. 每日温度
题目链接:
代码:
class Solution {
public:
vector<int> dailyTemperatures(vector<int>& temperatures) {
stack<int>st;
int size = temperatures.size();
vector<int>result(size,0);
if(size>0) st.push(0);
for(int i=1;i<size;i++){
if(temperatures[i]<=temperatures[st.top()]){
st.push(i);
}
else{
while(!st.empty()&&temperatures[i]>temperatures[st.top()]){
result[st.top()] = i - st.top();
st.pop();
}
st.push(i);
}
}
return result;
}
};
LeetCode 496.下一个更大元素 I
题目链接:
代码:
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
int size = nums1.size();
vector<int>result(size,-1);
if(size==0) return result;
unordered_map<int,int>umap;
for(int i=0;i<size;i++){
umap[nums1[i]] = i;
}
stack<int>st;
st.push(0);
for(int i=1;i<nums2.size();i++){
if(nums2[i]<=nums2[st.top()]){
st.push(i);
}
else{
while (!st.empty() && nums2[i] > nums2[st.top()]) {
if (umap.count(nums2[st.top()]) > 0) { // 看map里是否存在这个元素
result[umap[nums2[st.top()]]] = nums2[i];
}
st.pop();
}
st.push(i);
}
}
return result;
}
};