LeetCode面试系列 第10天:No.976 - 三角形的最大周长

上一篇 LeetCode 面试题中,我们分析了一道字符串的算法题 - 反转字符串中的元音字母,今天我们来分析一道简单的几何题吧。

Leetcode

今天要给大家分析的面试题是 LeetCode 上第 976 号问题,

LeetCode - 976. 三角形的最大周长

https://leetcode-cn.com/classic/problems/largest-perimeter-triangle/

题目描述

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

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

示例 1:

输入:[2,1,2]输出:5

示例 2:

输入:[1,2,1]输出:0

示例 3:

输入:[3,2,3,4]输出:10

示例 4:

输入:[3,6,2,3]输出:8

提示:

  1. 3 <= A.length <= 10000
  2. 1 <= A[i] <= 10^6
  • 题目难度:简单

  • 通过次数:8.8K

  • 提交次数:16.1K

  • 贡献者:LeetCode

  • 相关标签

    https://leetcode-cn.com/tag/sort

    • 数学

      https://leetcode-cn.com/tag/math

    • 排序
  • 相似题目

    • 最大三角形面积https://leetcode-cn.com/problems/largest-triangle-area  难度: 简单

解题思路:

我们知道,平面中构成三角形的充分必要条件是 3条边中任意两边之和大于第三边(3次比较),也即 较短的两边之和大于最长边即可(有序情形下只需1次比较)。而要求三角形的最大边长,也就是使得三边之长最大,当然是取最长的3个边长了。于是求解此题的具体步骤如下:

  • 将数组 A 中的各边长度按从大到小排序
  • 遍历排过序的数组中的数,取出相邻的 3 个边长,当第一次满足较短的两边之和大于最长边时,则对这3边求和返回即可。

临界情形: 输入的边数不到3个,直接 return 0.

已 AC 代码:

class Solution: def largestPerimeter(self, A: List[int]) -> int: if (len(A) < 3): return 0
A.sort(reverse=True) for i in range(len(A)-2): if A[i] < A[i+1] + A[i+2]: # Can build a triangle return A[i] + A[i+1] + A[i+2] return 0

运行结果:

执行用时: 256 ms, 在所有 python3 提交中击败了 91.91 % 的用户.

leetcode976-result

示例代码: https://github.com/JustDoPython/leetcode-python/tree/master/leetcode-976

LeetCode面试系列:

第1天:Leetcode 89 - 格雷码

第2天:No.136 - 只出现一次的数

第3天:No.67 - 二进制数求和

第4天:No.202 - 快乐数

第5天:No.204 - 统计质数

第6天:No.9 - 回文数

第7天:No.13 - 罗马数字转整数

第8天:No.58 - 最后一个单词的长度

第9天:No.345 - 反转字符串中的元音字母

(0)

相关推荐

  • ​LeetCode刷题实战41:缺失的第一个正数

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战334:递增的三元子序列

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战215:数组中的第K个最大元素

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • Leetcode面试系列 第1天:Leetcode 89 - 格雷码

    最近,打算花点时间写个 Python 解决 Leetcode 题的系列文章~ 大家是否还记得电影黑客帝国中的数字雨林的场景?事实上,计算机底层数据的存储和运算都是二进制的,因而面试题环节中面试官也经常 ...

  • LeetCode面试系列 第2天:No.136 - 只出现一次的数

    LeetCode面试题题系列的上一篇文章 Leetcode面试系列 第1天:Leetcode 89 - 格雷码 中,我们介绍了 二进制相关 的一个典型题. 今天呢,咱们来聊聊哈希表(字典),这是另一种 ...

  • LeetCode面试系列 第3天:No.67 - 二进制数求和

    大家都知道 LeetCode 中的第一道题是 Two Sum,比较简单.我们今天决定挑一个与之类似,但难度稍大于之的问题 二进制之和来分析,其中涉及到的主要知识是 Python 中的 进制转换,比如后 ...

  • LeetCode面试系列 第4天:No.202 - 快乐数

    或许你不知道的是,Leetcode 中是有很多 数学题 的,本文要解析的题 快乐数 就是其中到一个典型问题,本题将基于数据结构 set 来求解. 今天要给大家分析的面试题是 LeetCode 上第 2 ...

  • LeetCode面试系列 第5天:No.204 - 统计质数

    在上篇算法题的文章中,我们介绍了 LeetCode 中的一道数学题 - 快乐数 .今天,我们来聊聊质数(英文是Prime,也称为素数)相关的面试题.以前很多编程书上会有个经典问题,即判断一个数是否是质 ...

  • LeetCode面试系列 第6天:No.9 - 回文数

    上一篇面试题中,我们使用了 埃拉托斯特尼筛法 去统计给定范围内质数的个数(LeetCode No.204),还是有点烧脑的.今天我们来分析一道相对轻松的字符串面试题吧,恰好大家从Python 100天 ...

  • LeetCode面试系列 第7天:No.13 - 罗马数字转整数

    上一篇 LeetCode 面试题中,我们分析了一道轻松的字符串面试题 - 回文数.今天我们来分析一道将数学和字符串结合起来的的面试题. Leetcode 今天要给大家分析的面试题是 LeetCode ...

  • LeetCode面试系列 第8天:No.58 - 最后一个单词的长度

    上一篇 LeetCode 面试题中,我们分析了一道将数学和字符串结合起来的的面试题,今天我们再来分析了一道轻松的字符串面试题吧~ Leetcode 今天要给大家分析的面试题是 LeetCode 上第 ...

  • LeetCode面试系列 第9天:No.345 - 反转字符串中的元音字母

    上一篇 LeetCode 面试题中,我们分析了一道相对轻松的字符串面试题 - 最后一个单词的长度.今天,我们接着来看另一道字符串的算法题吧. Leet code 今天要给大家分析的面试题是 LeetC ...