Skip to content

Commit bc42a40

Browse files
aQuaaQua
aQua
authored and
aQua
committed
611 finish, 23ms
1 parent 661e60b commit bc42a40

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

Algorithms/0611.valid-triangle-number/valid-triangle-number.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,20 @@ func triangleNumber(a []int) int {
99
n := len(a)
1010

1111
res := 0
12-
for i := 0; i < n-2; i++ {
13-
for j := i + 1; j < n-1; j++ {
14-
for k := j + 1; k < n; k++ {
15-
if a[i]+a[j] > a[k] {
16-
res++
17-
} else {
18-
break
19-
}
12+
for k := n - 1; 2 <= k; k-- {
13+
for i, j := 0, k-1; i < j; {
14+
// 由于 a 是递增的,保证了 a[i] <= a[j] <= a[k]
15+
// 所以,只要 a[i] + a[j] > a[k]
16+
// 三者就可以构成三角形
17+
if a[i]+a[j] > a[k] {
18+
// a[j], a[k] 和 a[i:j] 中的任意一个,都可以组成三角形
19+
// a[i:j] 中元素个数是 j-i
20+
res += j - i
21+
// a[j] 足够长,可以变短试试看
22+
j--
23+
} else {
24+
// a[i] 不够长,需要变长后,再看看
25+
i++
2026
}
2127
}
2228
}

0 commit comments

Comments
 (0)