给定由一些正数(代表长度)组成的数组 nums
,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0
。
示例 1:
输入:nums = [2,1,2] 输出:5 解释:你可以用三个边长组成一个三角形:1 2 2。
示例 2:
输入:nums = [1,2,1,10] 输出:0 解释: 你不能用边长 1,1,2 来组成三角形。 不能用边长 1,1,10 来构成三角形。 不能用边长 1、2 和 10 来构成三角形。 因为我们不能用任何三条边长来构成一个非零面积的三角形,所以我们返回 0。
class Solution:
def largestPerimeter(self, nums: List[int]) -> int:
#首先进行排序
nums.sort(reverse=True)
n=len(nums)
for i in range(n-2):
if nums[i]<nums[i+1]+nums[i+2]:
return nums[i]+nums[i+1]+nums[i+2]
return 0
将数组从大到小排序。
从头开始,检查每三个连续的元素是否满足三角形不等式
a>b>c……
b+c>a
如果满足,则返回这三个元素的周长。
如果遍历完所有可能的三元组都不满足,则返回 0。
作者:Miku-123
链接:https://leetcode.cn/problems/largest-perimeter-triangle/solutions/2821323/geng-kuai-su-de-fang-fa-by-miku-123-i-xggq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。