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

20201129

题目:

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

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

示例:

  1. 示例 1:
输入:[2,1,2]
输出:5
  1. 示例 2:
输入:[1,2,1]
输出:0
  1. 示例 3:
输入:[3,2,3,4]
输出:10
  1. 示例 4:
输入:[3,6,2,3]
输出:8

提示:

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

抛砖引玉

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

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

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

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

抛砖引玉

/**
 * @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 栏目
欢迎关注留言

公众号:前端小书童

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值