979. 三角形的最大周长

给定由一些正数(代表长度)组成的数组 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
};

构成三角形的充要条件是: 两边之和大于第三边(此时肯定满足两边之差小于第三边)

以更加简单的方式去思考问题,最大那么就是倒序,能成为三角形那么就是判断前三个值是否能构成三角形

posted @ 2020-07-26 17:04  rencoo  阅读(352)  评论(0编辑  收藏  举报