vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {if(nums1.empty() || nums2.empty())return {};int len = nums2.size();unordered_map<int, int> m;stack<int> s;for(int i = len - 1;i >= 0;--i){while(!s.empty() && nums2[i] >= s.top())s.pop();if(s.empty())m[nums2[i]] = -1;else m[nums2[i]] = s.top();s.push(nums2[i]);}int n = nums1.size();vector<int> ans(n, 0);for(int i = 0;i < n;++i){ans[i] = m[nums1[i]];}return ans;}
