力扣496. 下一个更大元素 I
暴力破解时间复杂度为n2,需要遍历两个数组,这道题本意是使用单调栈解题
单调栈:找到队伍后面比你高的第一人
通过单调栈在hashmap中记录下每个数对应后面最大的数,最后在hashmap中找到输出即可
class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
Stack<Integer> s = new Stack<Integer>();
Map<Integer,Integer> m = new HashMap();
for(int i=0;i<nums2.length;i++){
while(s.size()!=0&&s.lastElement()<nums2[i]){
m.put(s.lastElement(),nums2[i]);
s.pop();
}
s.add(nums2[i]);
}
int[] a = new int[nums1.length];
for(int j=0;j<nums1.length;j++){
a[j] = m.getOrDefault(nums1[j],-1);
}
return a;
}
}