0%

LeetCode-456

题目

456. 132 模式

结果

代码

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
}

时间仓促,有时间再想想复杂度更低的解法。

复杂度

时间复杂度:O(n²)

空间复杂度:O(1)