LeetCode 976 Largest Perimeter Triangle 解题报告

题目要求

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

        

 

posted on 2019-03-11 09:44  锋上磬音  阅读(136)  评论(0编辑  收藏  举报