遍历第二个数组,用一个栈来构建一个数字和next greater一一对应的map即可。
vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) {
stack<int> st;
unordered_map<int,int> mp;
vector<int> vec;
for (int i : nums) {
while(!st.empty()) {
int num = st.top();
if(i>num) {
mp[num] = i;
st.pop();
} else {
break;
}
}
st.push(i);
}
for (int i : findNums) {
if (mp.find(i) == mp.end()) {
vec.push_back(-1);
} else {
vec.push_back(mp[i]);
}
}
return vec;
}