map, stack ---- next larger element (pending stack solution study)

method one

First traversal nums2, will be credited back together each element of the first big element to the map, and then, in traversing nums1 found in the 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 };

 

Guess you like

Origin www.cnblogs.com/pacino12134/p/11028982.html