class Solution {
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
if(nums2.length==0) return null;
HashMap<Integer, Integer> map = new HashMap<>();
Stack<Integer> stack = new Stack<>();
stack.push(nums2[0]);
int i=1;
while(i<nums2.length){
while(!stack.empty()&&nums2[i]>stack.peek()) {
map.put(stack.peek(),nums2[i]);
stack.pop();
}
stack.push(nums2[i++]);
}
while(!stack.empty()){
map.put(stack.pop(),-1);
}
for(int j=0;j<nums1.length;j++){
nums1[j]=map.get(nums1[j]);
}
return nums1;
}
}
用单调栈解决数组的下一个更大元素的问题
猜你喜欢
转载自blog.csdn.net/changbaishannefu/article/details/115143898
今日推荐
周排行