哈希表+双指针
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int, int> idx;
for (int i = 0; i < nums2.size(); i ++ ) idx[nums2[i]] = i;
vector<int> res;
for (int i = 0; i < nums1.size(); i ++ ) {
int j = idx[nums1[i]] + 1;
while (j < nums2.size() && nums2[j] < nums1[i]) j ++ ;
if (j >= nums2.size()) res.push_back(-1);
else res.push_back(nums2[j]);
}
return res;
}
};