题目要求
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