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+1
和i+2
;return
表示函数提前结束并返回值。