原题链接
算法 单调栈
复杂度 O(n)
class Solution {
public:
bool find132pattern(vector<int>& nums) {
stack<int>stk;
int maxv=INT_MIN;
for(int i=nums.size()-1;i>=0;i--)
{
if(nums[i]<maxv)return true;
while(stk.size()&&nums[i]>stk.top())
{
maxv=max(stk.top(),maxv);
stk.pop();
}
stk.push(nums[i]);
}
return false;
}
};
该博客探讨了一种算法,通过单调栈在O(n)的时间复杂度内找到整数数组中的132模式。132模式是指数组中存在i < j < k使得nums[i] < nums[k] < nums[j]且nums[i]为最小值。代码实现中,从后往前遍历数组,将大于栈顶元素的数压入栈,并维护最大值。如果当前元素小于最大值,说明存在132模式并返回true。遍历结束未找到则返回false。
203

被折叠的 条评论
为什么被折叠?



