这道题要好好看题,nums1是nums2的子集,而且nums2中无重复元素

    1. class Solution {
    2. public:
    3. vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
    4. if(!nums1.size() || !nums2.size()) return vector<int>();
    5. map<int, int> mp;
    6. stack<int> stk;
    7. for(int i = 0; i < nums2.size(); i++)
    8. {
    9. while(stk.size() && stk.top() < nums2[i])
    10. {
    11. mp[stk.top()] = nums2[i];
    12. stk.pop();
    13. }
    14. // if(!stk.size() || stk.top() > nums2[i])
    15. stk.push(nums2[i]);
    16. }
    17. while(stk.size())
    18. {
    19. mp[stk.top()] = -1;
    20. stk.pop();
    21. }
    22. vector<int> res;
    23. for(auto x: nums1)
    24. {
    25. res.push_back(mp[x]);
    26. }
    27. return res;
    28. }
    29. };