【一天一大 lee】三角形的最大周长 (难度:简单) - Day20201129

2020-12-03 15:42:05 浏览数 (1)

20201129

题目:

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。

如果不能形成任何面积不为零的三角形,返回 0。

示例:

  1. 示例 1:
代码语言:javascript复制
输入:[2,1,2]
输出:5
  1. 示例 2:
代码语言:javascript复制
输入:[1,2,1]
输出:0
  1. 示例 3:
代码语言:javascript复制
输入:[3,2,3,4]
输出:10
  1. 示例 4:
代码语言:javascript复制
输入:[3,6,2,3]
输出:8

提示:

  • 3 <= A.length <= 10000
  • 1 <= A[i] <=
10^6

抛砖引玉

三角形两边之和大于第三边:a b>c

满足上面条件的三个元素组合中,确定 c,a b 越大周长越大

那么,将 A 按倒序排序,最大周长的三个元素一定是最先遇到的相邻的且满足 a b>c 的组合

(c 还可以与 a、b 后面的元素组合但是其周长非最大,如果 a b 次数已小于 c,那么后面的组合也一定小于 c)

抛砖引玉

代码语言:javascript复制
/**
 * @param {number[]} A
 * @return {number}
 */
var largestPerimeter = function(A) {
    A.sort((a, b) => b - a)
    for (let i = 2; i < A.length; i  ) {
        if (A[i - 2]   A[i - 1] > A[i]) {
            return A[i - 2]   A[i - 1]   A[i]
        }
    }
    return 0
}

博客: 前端小书童

每天的每日一题,写的题解会同步更新到公众号一天一大 lee 栏目 欢迎关注留言

公众号:前端小书童

0 人点赞