摘要: LeetCode 976题要求从数组中找到能构成三角形的三个数,使其周长最大。解法采用降序排序后贪心判断,满足两边之和>第三边即可返回周长。时间复杂度O(nlogn),空间O(1)。关键点:三角形性质、排序优化、边界处理。示例:[2,1,2]→5。代码使用Python内置排序和遍历实现。 - 详解

LeetCode|Day9|976. 三角形的最大周长|Python刷题笔记

?️ 本文属于【LeetCode 简单题百日计划】系列
? 点击查看系列总目录 >>


? 题目简介

题号:976. 三角形的最大周长
难度:简单
题目链接:点击跳转


? 题目描述(简要)

给定一个正整数数组 nums,从中选出三个数,使得它们可以构成一个三角形,并返回其最大周长。如果无法构成任何三角形,返回 0。

示例:

输入:nums = [2,1,2]
输出:5
解释:可以组成三角形,周长是 2 + 2 + 1 = 5

? 解法:排序 + 贪心判断三角形

class Solution
:
def largestPerimeter(self, nums: list[int]) ->
int:
nums.sort(reverse=True)
for i in range(len(nums) - 2):
if nums[i] < nums[i+1] + nums[i+2]:
return nums[i] + nums[i+1] + nums[i+2]
return 0

? 我的理解

  • 三角形的性质:任意两边之和 > 第三边
  • 所以我们排序后,从大到小遍历,寻找第一个满足三角形条件的三元组;
  • 因为我们从大到小遍历,遇到的第一个合法三角形就是最大周长。

? 基础语法复习:

  • nums.sort(reverse=True):降序排序;
  • range(len(nums) - 2):防止越界访问 i+1i+2
  • return 表示函数提前结束并返回值。

? 返回总目录:点我回目录

posted @ 2025-07-30 21:32  yfceshi  阅读(21)  评论(0)    收藏  举报