三角形两边之和大于第三边,将数组排序,利用二分法找到小于两边之和的第三边个数,相加得到最终的结果;

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型
#
import bisect
class Solution:
    def validTriangleNumber(self , nums: List[int]) -> int:
        # write code here
        nums.sort()
        res = 0
        for i in range(len(nums)):
            for j in range(i + 1, len(nums)):
                res += bisect.bisect_left(nums[j + 1:], nums[i] + nums[j])
        return res