190.Largest Perimeter Triangle

2024-05-12 00:38
文章标签 triangle 190 largest perimeter

本文主要是介绍190.Largest Perimeter Triangle,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

Given an array A of positive lengths, return the largest perimeter of a triangle with non-zero area, formed from 3 of these lengths.

If it is impossible to form any triangle of non-zero area, return 0.

Example 1:

Input: [2,1,2]
Output: 5
Example 2:

Input: [1,2,1]
Output: 0
Example 3:

Input: [3,2,3,4]
Output: 10
Example 4:

Input: [3,6,2,3]
Output: 8

Note:

3 <= A.length <= 10000
1 <= A[i] <= 10^6

链接

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

分析

输入的是一个数组,首先对数组从大到小进行排序,对于任意相邻三个数字,如果前面两个的差值小于第三个,那么这三个就是题目要求的最大周长的值;
基于如下两点考虑:
(1).题目要求返回最长,则按照从大到小的顺序排序后,则找到一个满足三角形特性的就可以返回了。
(2).如果连续三个数字(a>b>c),不能满足三角形特性(a - b > c),那么再往c的后一个更不可能找到了。
思考:
根据这个题目可以衍生出一道,给定一个整型数字,返回可以拼接成三角形的个数。
解决方案和上面一个,先排序,对于任意相邻的两个数字 a 和 b,找到所有可以满足a - b > c 的 c 的个数,最后累加这些个数即可;

code

class Solution(object):def largestPerimeter(self, A):""":type A: List[int]:rtype: int""""""三角形特性:任意两条边之和大于第三边,为了防止加法溢出,可以使用任意两边之差小于第三边的特性;输入的是一个数组,首先对数组从大到小进行排序,对于任意相邻三个数字,如果前面两个的差值小于第三个,那么这三个就是题目要求的最大周长的值;基于如下两点考虑:(1).题目要求返回最长,则按照从大到小的顺序排序后,则找到一个满足三角形特性的就可以返回了。(2).如果连续三个数字(a>b>c),不能满足三角形特性(a - b > c),那么再往c的后一个更不可能找到了。"""A.sort(reverse=True)for i in range(0, len(A) - 2):if A[i] - A[i+1] < A[i + 2]:return A[i] + A[i+1] + A[i + 2]return 0

这篇关于190.Largest Perimeter Triangle的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981112

相关文章

leetCode#119. Pascal's Triangle II

Description Given an index k, return the kth row of the Pascal’s triangle. For example, given k = 3, Return [1,3,3,1]. Note: Could you optimize your algorithm to use only O(k) extra space? Code

[LeetCode] 215. Kth Largest Element in an Array

题:https://leetcode.com/problems/kth-largest-element-in-an-array/description/ 题目 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not th

[LeetCode] 190. Reverse Bits

题:https://leetcode.com/problems/reverse-bits/ 题目大意 将32位的数,二进制翻转。 解题思路 解法和 将int a =123,翻转的思路 相同。 int b= 0;while(a>0){b = b*10 + a %10;a /=10;} 将新数整体左移一位,然后 取每个数的第i位置,将该位放到 新数的最低位。循环32次遍可以得到翻转。

CodeForces 407A Triangle

题意: 一个直角三角形所有点都在二维平面整点上  其中两条边长度分别为a和b  且没有任何一条边与坐标轴平行  问  这样的三角形存不存在  如果存在输出一组坐标 思路: 可以设解存在  然后先固定(0,0)这个点  这样就可以求出所有满足边长是a和b的(x,y)坐标分别放在两个数组里 注意只枚举第一、二象限即可  要不还要防止三点共线 枚举a和b的所有解  如果这确定的三个点满足

National Contest for Private Universities (NCPU), 2019 E. Generalized Pascal's Triangle

编辑代码 2000ms 262144K Generalized Pascal's Triangle Pascal's triangle is a triangular array in which each number can be calculated by the sum of the two numbers directly above that number as shown i

leetcode515 Find Largest Value In Each Tree Row Java

1、用队列进行处理。分别找到每一行中的最大值。 public List<Integer> largestValues(TreeNode root) {List<Integer> result = new ArrayList<>();if(root == null) {return result;}Queue<TreeNode> queue = new LinkedList<>();queu

数据赋能(190)——开发:数据产品——技术方法、主要工具

技术方法 数据产品涉及的技术方法非常广泛,包括但不限于: 数据采集与处理技术:如ETL(抽取、转换、加载)技术,用于从各种数据源中收集数据并进行预处理。数据存储与管理技术:如分布式存储、NoSQL数据库等,用于高效、安全地存储和管理数据。数据分析与挖掘技术:如机器学习、深度学习等算法和技术,用于从数据中提取有价值的信息和模式。数据可视化技术:如数据可视化库、图表绘制工具等,用于将数据以直观、易

UVA 11401 Triangle Counting

中文详解请访问我的博客:http://xiaoshig.sinaapp.com/?p=128 You are given n rods of length 1, 2…, n. You have to pick any 3 of them & build a triangle. How many distinct triangles can you make? Note that, two

[leetcode] 515. Find Largest Value in Each Tree Row

Find Largest Value in Each Tree Row 描述 You need to find the largest value in each row of a binary tree. Example: Input: 1/ \3 2/ \ \ 5 3 9 Output: [1, 3, 9] 我的代码 简单的dfs。 要使

leintcode Kth Largest Element python

Description Find K-th largest element in an array. 参考快速排序的思想 class Solution:"""@param n: An integer@param nums: An array@return: the Kth largest element"""def sort_info(self,begin,end,nums):if len(