456. 132 模式

逆序遍历把每个数压入栈中,如果当前数大于栈顶,进入 while 循环并更新第二大元素

func find132pattern(nums []int) bool {
    second := -1_000_000_000
    stackPtr := 0
    stack := make([]int, len(nums))
    for i := len(nums) - 1; i >= 0; i-- {
        num := nums[i]
        if num < second {
            return true
        }
        for stackPtr > 0 && num > stack[stackPtr - 1] {
            second = max(second, stack[stackPtr - 1])
            stackPtr--
        }
        stack[stackPtr] = num
        stackPtr++
    }
    return false
}