0976. 三角形的最大周长
大约 1 分钟
---
0976. 三角形的最大周长
- 标签:贪心、数组、数学、排序
- 难度:简单
题目链接
题目大意
描述:给定一些由正数(代表长度)组成的数组 nums。
要求:返回由其中 3 个长度组成的、面积不为 0 的三角形的最大周长。如果不能形成任何面积不为 0 的三角形,则返回 0。
说明:
- 。
- 。
示例:
- 示例 1:
输入:nums = [2,1,2]
输出:5
解释:长度为 2, 1, 2 的边组成的三角形周长为 5,为最大周长解题思路
思路 1:
要想三角形的周长最大,则每一条边都要尽可能的长,并且还要满足三角形的边长条件,即 a + b > c,其中 a、b、c 分别是三角形的 3 条边长。
所以,我们可以先对所有边长进行排序。然后倒序枚举最长边 nums[i],判断前两个边长相加是否大于最长边,即 nums[i - 2] + nums[i - 1] > nums[i]。如果满足,则返回 3 条边长的和,否则的话继续枚举最长边。
代码
思路 1 代码:
class Solution:
def largestPerimeter(self, nums: List[int]) -> int:
nums.sort()
for i in range(len(nums) - 1, 1, -1):
if nums[i - 2] + nums[i - 1] > nums[i]:
return nums[i - 2] + nums[i - 1] + nums[i]
return 0