假设我们有一个长度为正的数组 nums ,我们必须通过从该数组中获取三个值来找到三角形的最大周长。当不可能形成任何非零面积的三角形时,则返回0。
因此,如果输入类似于 [8,3,6,4,2,5],那么输出将是 19。
为了解决这个问题,我们将按照以下步骤操作 -
对列表编号进行排序
a := 从 nums 中删除最后一个元素
b := 从 nums 中删除最后一个元素
c := 从 nums 中删除最后一个元素
而 b+c <= a,做
返回 0
如果不是 nums 非零,则
a := b
b := c
c := 从 nums 中删除最后一个元素
返回 a+b+c
让我们看看以下实现以获得更好的理解 -
def solve(nums): nums.sort() a, b, c = nums.pop(), nums.pop(), nums.pop() while b+c<=a: if not nums: return 0 a, b, c = b, c, nums.pop() return a+b+c nums = [8,3,6,4,2,5] print(solve(nums))
[8,3,6,4,2,5]输出结果
19