#976三角形的最大周长

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

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

           示例 1             示例2                示例3                 示例4

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

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-perimeter-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

官方题解里yat写了

实际两边之和大于第三边 等价于 两边之差小于第三边,判断一个就行了

l1=[3,2,3,4]
l2=[3,6,2,3]
def triangle_perimeter(list):
    list.sort(reverse=True) # 降序排序
    for i in range(len(list)-2):
        if list[i]<list[i+1]+list[i+2]:
            return list[i]+list[i+1]+list[i+2] # list[i]是最大的,后面2个是比它小的,如果这2个的和小于第三边(list[i]),那再往后的不用和当前list[i]比较,都不满足三角形成立的条件,因为是降序,后面的和只会更小
    return 0
print(triangle_perimeter(l1))
print(triangle_perimeter(l2))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值