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