给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0。
示例
输入:[3,6,2,3]
输出:8
代码
var largestPerimeter = function(A) {
if (A.length < 3) {
return 0
}
A.sort((a, b) => a - b)
for (let i = A.length - 1; i >= 2; i -= 1) {
if (A[i - 1] + A[i - 2] > A[i]) { // 两个最大的加起来都没大于第三边,其他的就不需要尝试了
return A[i] + A[i - 1] + A[i - 2]
}
}
return 0
};
构成三角形的充要条件是: 两边之和大于第三边(此时肯定满足两边之差小于第三边)
以更加简单的方式去思考问题,最大那么就是倒序,能成为三角形那么就是判断前三个值是否能构成三角形