496. 下一个更大元素 I

  1. 用map记录num2中元素的下一个最大元素
  2. 再遍历num1,查找num1中的元素是否在map中
    1. class Solution {
    2. public:
    3. vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
    4. stack<int> st;
    5. unordered_map<int,int> map;
    6. vector<int> result(nums1.size(),-1);
    7. for(int i=0;i<nums2.size();i++)
    8. {
    9. while(!st.empty() && nums2[i]>st.top())
    10. {
    11. map[st.top()]=nums2[i];
    12. st.pop();
    13. }
    14. st.push(nums2[i]);
    15. }
    16. for(int i=0;i<nums1.size();i++)
    17. {
    18. if(map[nums1[i]] != 0)
    19. result[i] = map[nums1[i]];
    20. }
    21. return result;
    22. }
    23. };