611. 有效三角形的个数 中等
给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。
示例 1:
输入: [2,2,3,4]
输出: 3
解释:
有效的组合是:
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3
注意:
- 数组长度不超过1000。
- 数组里整数的范围为 [0, 1000]。
代码参考:
package main
import (
"fmt"
"sort"
)
func main() {
fmt.Println(triangleNumber([]int{2, 2, 3, 4}))
}
// 构成三角形的条件:a+b>c, a-b<c
// 两数之和的变种
func triangleNumber(nums []int) int {
sort.Ints(nums)
n := len(nums)
count := 0
for i := 0; i < n; i++ {
for j := i + 1; j < n; j++ {
for _, num := range nums[j+1:] {
if nums[j]-nums[i] < num && num < nums[i]+nums[j] {
count++
}
}
}
}
return count
}
最后编辑: kuteng 文档更新时间: 2021-06-05 10:16 作者:kuteng