map、栈————下一个更大的元素(待定,栈解法学习中)
方法一
先遍历nums2,将每个元素后面第一个大的元素一起存入到map中,然后在遍历nums1,在map中找到。
1 class Solution { 2 public: 3 vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) { 4 map<int,int> sum; 5 vector<int> res; 6 for(int i=0;i<nums2.size();i++){ 7 bool found=false; 8 for(int j=i+1;j<nums2.size() && !found;j++){ 9 if(nums2[j]>nums2[i]){ 10 sum.insert(map<int,int>::value_type(nums2[i],nums2[j])); 11 found=true; 12 } 13 } 14 if(!found) sum.insert(map<int,int>::value_type(nums2[i],-1)); 15 } 16 for(int i=0;i<nums1.size();i++){ 17 map<int,int>::iterator iter = sum.find(nums1[i]); 18 if(iter!=sum.end()){ 19 res.push_back(iter->second); 20 } 21 else continue; 22 } 23 return res; 24 } 25 };