456. 132 模式(单调栈)
主要思路是从后往前去遍历
- 2 表示当前仅小于最大3的有效数字: 初始时为 INT_MIN无效值
- 3 则不断用一个单调栈维护,保证是单调递减的
- 在过程中,一旦发现比 有效2 小的数字,那么肯定有一个3大于2, 那么就存在这样的132模式了
- 这里每次会更新为更大的数字,这样子1更加容易满足条件
class Solution {
public:
bool find132pattern(vector<int>& nums) {
stack<int> st;
int two = INT_MIN;
for(int i = nums.size() - 1; i >= 0; i--){
if(two <= nums[i]){
while(!st.empty() && nums[i] > nums[st.top()]){
two = nums[st.top()];
st.pop();
}
st.push(i);
}
else return true;
}
return false;
}
};