496-下一个更大元素I

496-下一个更大元素I

力扣496

https://leetcode-cn.com/problems/next-greater-element-i/

单调栈简单题,找下一个最大值,因此用递减栈遍历nums2,因为nums1要定位查,所以将结果放入map中

这题没什么好讲的了,所谓简单题,模板一套就vans了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public int[] nextGreaterElement(int[] nums1, int[] nums2) {
Deque<Integer> stack = new LinkedList<>();
Map<Integer, Integer> map = new HashMap<>(); //数字:下一个更大元素
for (int i = 0; i < nums2.length; i++) {
while (!stack.isEmpty() && nums2[i] > stack.peekLast()){ //找到了比他大的元素
map.put(stack.pollLast(), nums2[i]);
}
stack.offerLast(nums2[i]);
}
//仍在栈中而不在map中的元素就是-1
int[] res = new int[nums1.length];
for (int i = 0; i < nums1.length; i++) {
res[i] = map.getOrDefault(nums1[i], -1);
}
return res;
}

其他单调栈系列题可以点这里

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×