32 lines
480 B
Go
32 lines
480 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
)
|
|
|
|
func triangleNumber(nums []int) int {
|
|
sort.Sort(sort.IntSlice(nums))
|
|
ret := 0
|
|
for i := range nums {
|
|
i2 := len(nums) - 2
|
|
if i2 > i {
|
|
num := nums[i] + nums[i2]
|
|
for i3 := len(nums) - 1; i3 > i2; i3-- {
|
|
if num > nums[i3] {
|
|
ret += (i3 - i2) + (i2 - i - 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
return ret
|
|
}
|
|
|
|
func main() {
|
|
fmt.Println(triangleNumber([]int{2, 3, 4, 4})) //4
|
|
|
|
fmt.Println(triangleNumber([]int{2, 2, 3, 4})) //3
|
|
}
|