LeetCode 976 Largest Perimeter Triangle 解题报告

时间:2021-09-15 04:59:28

题目要求

Given an array A of positive lengths, return the largest perimeter of a triangle with non-zero area, formed from 3 of these lengths.

If it is impossible to form any triangle of non-zero area, return 0.

题目分析及思路

给定一个正整数数组,要求返回由这些数所能组成的周长最长且面积非零的三角形的周长。若无法形成任意非零面积的三角形,则返回0。可以先对数组从大到小排序,然后从前往后依次判断三边是否能组成一个三角形(依据两边和大于第三边),若能即返回这个三角形的周长,直到一个三角形都无法组成时就返回0。

python代码

class Solution:

def largestPerimeter(self, A: List[int]) -> int:

A.sort(reverse = True)

for i in range(2, len(A)):

if A[i] + A[i-1] > A[i-2]:

return A[i-2] + A[i-1] + A[i]

return 0