对每个数,遍历找到在目标数组中的位子,然后在位子之后找比他大的数,找到即寻找下一个数 update 使用栈和map 对于在nums中出现的每个数,在map中保存<这个数,该位置之后的第一个比他大的数>,然后再遍历findNums,用map确定每一位对应的值,不存在的对应-1
update
class Solution {public: vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) { vector<int> result; stack<int> compare; unordered_map<int, int> finded; for (auto &p : nums){ while (compare.size() && compare.top() < p){ finded[compare.top()] = p; compare.pop(); } compare.push(p); } for (auto &p : findNums){ result.push_back(finded.count(p) ? finded[p] : -1); } return result; }};新闻热点
疑难解答