/**
 * @param {number[]} nums
 * @return {boolean}
 */
var find132pattern = function (nums) {
    let stack = []; // [num, minLeft]
    let curMin = nums[0];

    for (n of nums.slice(1)) {
        while (stack.length > 0 && n >= stack.at(-1)[0]) {
            stack.pop();
        }
        if (stack.length > 0 && n > stack.at(-1)[1]) {
            return true;
        }

        stack.push([n, curMin]);
        curMin = Math.min(curMin, n);
    }

    return false;
};