遍历第二个数组,用一个栈来构建一个数字和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;
}

本文介绍了一种使用栈实现的高效算法,该算法用于找出数组中每个元素右侧第一个比它大的元素。通过构建一个映射表,可以快速查找对应的结果。

270

被折叠的 条评论
为什么被折叠?



