leetcode 976. Largest Perimeter Triangle ( Python )

415 阅读1分钟

描述

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.

Example 1:

Input: [2,1,2]
Output: 5

Example 2:

Input: [1,2,1]
Output: 0

Example 3:

Input: [3,2,3,4]
Output: 10

Example 4:

Input: [3,6,2,3]
Output: 8

Note:

3 <= A.length <= 10000
1 <= A[i] <= 10^6

解析

根据题意,就是找出三个大的数来判断是否能组成三角形然后求周长,所以先排序,再找三个大数,按照三角形边长规则判断即可,时间复杂度 O(NlogN),空间复杂度为 O(1)。

解答

class Solution(object):
    def largestPerimeter(self, A):
        """
        :type A: List[int]
        :rtype: int
        """
        A.sort()
        A = A[::-1]
        for i in range(len(A)-2):
            if A[i]< A[i+1]+A[i+2]:
                return A[i]+A[i+1]+A[i+2]
        return 0                   

运行结果

Runtime: 180 ms, faster than 76.16% of Python online submissions for Largest Perimeter Triangle.
Memory Usage: 12.6 MB, less than 55.22% of Python online submissions for Largest Perimeter Triangle.		

每日格言:逆境是达到真理的一条通路。

请作者吃包子 支付宝

支付宝

微信

微信