
逆序遍历把每个数压入栈中,如果当前数大于栈顶,进入 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
}