0976. 三角形的最大周长【简单】
1. 📝 题目描述
给定由一些正数(代表长度)组成的数组 nums,返回 由其中三个长度组成的、面积不为零 的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。
示例 1:
txt
输入:nums = [2,1,2]
输出:5
解释:
你可以用三个边长组成一个三角形:1 2 2。1
2
3
4
5
2
3
4
5
示例 2:
txt
输入:nums = [1,2,1,10]
输出:0
解释:
你不能用边长 1,1,2 来组成三角形。
不能用边长 1,1,10 来构成三角形。
不能用边长 1、2 和 10 来构成三角形。
因为我们不能用任何三条边长来构成一个非零面积的三角形,所以我们返回 0。1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
提示:
3 <= nums.length <= 10^41 <= nums[i] <= 10^6
2. 🎯 s.1 - 解法 1
js
/**
* @param {number[]} nums
* @return {number}
*/
var largestPerimeter = function (nums) {
nums.sort((a, b) => a - b)
for (let i = nums.length - 1; i >= 2; i--) {
const a = nums[i - 2]
const b = nums[i - 1]
const c = nums[i]
if (a + b > c) return a + b + c
}
return 0
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
- 时间复杂度:
- 空间复杂度:
算法思路:
- 将数组按升序排序,三角形成立条件是三边满足
- 从最大边开始向前检查连续三条边,首次满足条件的三元组周长最大,返回其和;否则返回 0