方法一 前缀最小维护单调栈
先比较13 再比较12 再比较 23
class Solution {
public:
bool find132pattern(vector<int>& nums) {
stack<int> stk; //维护单调递减栈 什么是单调递减
vector<int> m1(nums.size());
m1[0]=nums[0];
for(int i=1;i<nums.size();i++){ //nums[i]结尾的最小的元素
m1[i]=min(nums[i],m1[i-1]);
}
//从后往前遍历
for(int i=nums.size()-1;i>=0;i--){
if(nums[i]>m1[i]){ //假设满足 m1<3
//需要满足m1<2
while (!stk.empty() && m1[i]>=stk.top()){ //弹出栈内不满足要求的数 以M1为最小值维护栈不会对后续造成影响
stk.pop();
}
//还需要满足3>2
if(!stk.empty() && nums[i]>stk