xszi / javascript-algorithms

算法修炼中...
5 stars 0 forks source link

有效三角形的个数 #86

Open xszi opened 3 years ago

xszi commented 3 years ago

给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。

示例 1:

输入: [2,2,3,4]
输出: 3

解释:

有效的组合是:

2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3

注意:

leetcode

xszi commented 3 years ago

参照两数之和三数之和

const getCount= function(arr) {
    const len = arr.length, count = 0
    arr.sort((a, b) => a - b)
    for (var k = len - 1; k > 1; k--) {
        let left = 0, right = k - 1
        while (left < right) {
            if (arr[left] + arr[right] > arr[k]) {
                count += right - left
                right--
            } else {
                left++
            }
        }
    }
    return count
}