LeetCode 496. Next Greater Element I
2020-06-18 09:38:51
# leetcode
# core problems
Problem
LeetCode 496. Next Greater Element I
1. 题目简述
给出两个无重复数组nums1和nums2,nums1是nums2的子集,找出nums1中所有元素在nums2中的下一个更大的元素,如果没有,则为-1。例如:
Input: nums1 = [4,1,2], nums2 = [1,3,4,2].
Output: [-1,3,-1]
Explanation:
For number 4 in the first array, you cannot find the next greater number for it in the second array, so output -1.
For number 1 in the first array, the next greater number for it in the second array is 3.
For number 2 in the first array, there is no next greater number for it in the second array, so output -1.
2. 算法思路
相关问题:
- LeetCode 503. Next Greater Element II
- LeetCode 556. Next Greater Element III
- LeetCode 739. Daily Temperatures(无解析)
monotonous stack(单调栈)
这是单调栈,经典的数据结构之一,单调栈的目的就是为了查找下一个更大/小的元素,步骤如下:
- 如果栈为空,或者栈顶元素大于当前元素时,push当前元素到栈顶;
- 如果栈不为空,且栈顶元素小于当前元素时,一直pop,直到栈为空或者栈顶元素大于当前元素。
注意:上面说的“下一个更大/更小元素”并不绝对,重要的是单调栈是什么样子的,找下一个更大更小元素只是其中一个应用,其他更多的应用还有很多!!!例如LeetCode 456. 132 Pattern!!!这点一定要注意!!!要深入理解数据结构,而不是单一问题。
1 | class Solution { |