1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| func find132pattern(nums []int) bool { if len(nums) < 3 { return false } for i := 1; i < len(nums); i++ { m1 := min(nums[:i]) m2, err := max(nums[i+1:], nums[i]) if len(nums[i+1:]) == 0 { continue } if err != nil { continue } if m1 < m2 && m2 < nums[i] { return true } } return false }
func max(nums []int, threshold int) (m int, err error) { for i, v := range nums { if i == 0 || (v > m && v < threshold) { m = v } } if m >= threshold { return 0, errors.New("not found") } return m, nil }
func min(nums []int) (m int) { for i, v := range nums { if i == 0 || v < m { m = v } } return }
|