给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。 3 <= A.length <= 1000 1 <= A[i] <= 1000
时间: 2024-02-18 12:06:32 浏览: 121
好的,这是一个关于求最大周长的三角形的问题。我们可以先将数组 A 进行排序,然后从后往前遍历数组,每次取出三个数,判断它们能否组成一个三角形。如果可以,直接返回这三个数的和,因为题目要求三角形的面积不为零,所以这三个数一定可以组成一个三角形。如果遍历完整个数组都没有找到符合条件的三个数,那就返回 0。
代码实现如下:
```python
def largestPerimeter(A):
A.sort(reverse=True) # 从大到小排序
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 # 无法组成三角形,返回0
```
时间复杂度为 O(nlogn),其中 n 为数组 A 的长度。
阅读全文