题目描述:
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0。
示例 1:
输入:[2,1,2]
输出:5
解题思路:
三个越接近的数形成三角形的可能性越大。所以先将A从大到小排序,找出最大的能形成三角形的三个数即可。
代码:
class Solution {
public:
int largestPerimeter(vector<int>& A) {
int sum = 0;
sort(A.begin(), A.end(), greater<int>());
for(size_t i=0; i<A.size()-2; i++)
{
if(A[i+1] + A[i+2] > A[i])
{
sum = A[i+1] + A[i+2] + A[i];
break;
}
else
continue;
}
return sum;
}
};