function find132pattern(nums: number[]): boolean {
let stack: { num: number; minLeft: number }[] = []; // [num, minLeft]
let curMin = nums[0];
for (let n of nums.slice(1)) {
while (stack.length > 0 && n >= stack[stack.length - 1].num) {
stack.pop();
}
if (stack.length > 0 && n > stack[stack.length - 1].minLeft) {
return true;
}
stack.push({ num: n, minLeft: curMin });
curMin = Math.min(curMin, n);
}
return false;
}