代码随想录算法训练营day58 | LeetCode 739. 每日温度 496. 下一个更大元素 I

739. 每日温度(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

思路:新学习的单调栈做法,实质就是用一个栈存储中间结果。在针对数组某个元素的结果没找出来之前,将数组该元素的信息存入栈中,找到结果后,再从栈中删除该元素的信息。

vector dailyTemperatures(vector& temperatures) {
    int size = temperatures.size();
    vector result(size, 0);
    stack st;
    st.push(0);
    for(int i=1; itemperatures[st.top()]){
                result[st.top()] = i-st.top();
                st.pop();
            }
            st.push(i);
        }
    }
    return result;
}

496. 下一个更大元素 I(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

思路:和上题非常相似,只需在针对数组元素找到结果删除栈中该元素之际,判断该元素是否在另一数组中出现。因此本题需要用到unordered_map。

vector nextGreaterElement(vector& nums1, vector& nums2) {
    int size1 = nums1.size();
    int size2 = nums2.size();
    vector result(size1, -1);
    unordered_map umap;
    for(int i=0; i st;
    st.push(0);
    for(int i=1; inums2[st.top()]){
                if(umap.count(nums2[st.top()])>0){
                    result[umap[nums2[st.top()]]] = nums2[i];
                }
                st.pop();
            }
            st.push(i);
        }
    }
    return result;
}

你可能感兴趣的:(算法,leetcode,职场和发展)