LeetCode976三角形的最大周长

本文介绍了一种算法,用于从一组正数中找出能组成最大周长且面积不为零的三角形。通过排序和遍历,该算法高效地找到符合条件的三个数,展示了如何在限制条件下求解几何问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给定由一些正数(代表长度)组成的数组 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] <= 10^6

思路:
形成三角形的条件:两边之和大于第三边
我想的是遍历所有三角形,从列表中取三个数所有中组合全判断并计算
先把列表从大到小排序,再遍历
注意:如果这里我们考虑这种连续的三个组建不了,但是跳跃的三个可以组建。
仔细想想不会存在这样情况的,我们的数据是已经排好序的,如果连续三个不能的话,其它他们两两之间的差值只会更大

Python代码实现如下:

class Solution(object):
    def largestPerimeter(self, A):
        """
        :type A: List[int]
        :rtype: int
        """
        res = 0
        A.sort(reverse=True)
        for i in range(len(A)-2):
            if A[i]+A[i+1]>A[i+2]:
                l = A[i]+A[i+1]+A[i+2]
                res = max(res,l)
        return res    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值