单调栈的应用:
求解当前元素右边比该元素大的第一个元素(左右、大小都可以)。
单调栈的构成:
单调栈里存储数组的下标;
单调栈里的元素递增,求解当前元素右边比该元素大的第一个元素;元素递减,求解当前元素左边比该元素大的第一个元素。
单调栈的作用:
记录遍历过的元素。
单调栈的解题过程:
将当前遍历到的元素与栈顶元素进行比较,有以下三种情况:
1.当前遍历到的元素>栈顶元素
已找到目标元素,弹出栈顶元素,(直到当前遍历到的元素<=栈顶元素)将当前遍历到的元素加入单调栈。【这是一个循环的过程】
2.当前遍历到的元素<=栈顶元素
直接将当前遍历到的元素加入单调栈。
代码实现:(739.)
leetcode496.
解题过程:
相比于纯粹的单调栈问题,这道题目还增加了两个数组之间的映射这一环节。
代码实现: