思路:
如何判断三条边能否构成三角形?-> 三条边从小到大a、b、c当且仅当a+b>c,这三条边才能组成三角形
固定最长边,判断另外两条边
class Solution:
def triangleNumber(self, nums) -> int:
n = len(nums)
res = 0
nums = sorted(nums)
for i in range(n-1, 1, -1):
l, r = 0, i - 1
while l < r:
# 说明l~r-1之间的值都与num[r]一切构成
if nums[l] + nums[r] > nums[i]:
res += r - l
r -= 1
else:
l += 1
return res