1.  题目

2. 分析

需要分析好再动手编程。

如果要构成三角形的最大周长,那么就需要尽可能用最长的边构建。所以可以先对数组排个序,然后基于排序得到的结果从大往小的逐个检查长度为3的窗口,判断该窗口的值是否满足三角形的构成条件,如果满足输出值,如果不满足,接着遍历。

3. 代码

class Solution:
    def largestPerimeter(self, nums: List[int]) -> int:
            nums.sort()
            max_len = 0
            for right in reversed(range(0,len(nums))):        
                left = right - 2
                mid = right - 1
                if (mid >=1 ):
                    if (nums[left] + nums[mid] > nums[right] and 
                        (nums[right] - nums[mid] < nums[left] )):
                        max_len = nums[left] + nums[mid] + nums[right] 
                        break
            return max_len
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.