20201129
题目:
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0。
示例:
- 示例 1:
输入:[2,1,2]
输出:5
- 示例 2:
输入:[1,2,1]
输出:0
- 示例 3:
输入:[3,2,3,4]
输出:10
- 示例 4:
输入:[3,6,2,3]
输出:8
提示:
- 3 <= A.length <= 10000
- 1 <= A[i] <=
抛砖引玉
三角形两边之和大于第三边: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 栏目 欢迎关注留言
公众号:前端小书童