描述
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.
每日格言:逆境是达到真理的一条通路。
请作者吃包子 支付宝