贪心算法,先排个序,选最大的三条边看满不满足三角形条件(两边之和大于第三边),若满足直接输出,若不满足则全体往后挪一位,继续判断。
代码如下:
class Solution:
def largestPerimeter(self, nums: List[int]) -> int:
nums = sorted(nums, reverse = True)
a, b, c = nums[0], nums[1], nums[2] ##先选出最大的三条边
for i in range(2,len(nums)):
if((b+c) > a): ## 最小两条大于最长的,直接break
break
elif(i != len(nums)-1): ## 全体往后挪一位继续判断
a, b, c = b, c, nums[i+1]
else: ## 没有符合条件的三角形
return 0
return a+b+c
执行通过: