LeetCode 976. Largest Perimeter Triangle

976. Largest Perimeter Triangle(三角形的最大周长)

链接

https://leetcode-cn.com/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

提示:

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

思路

这题偷了个懒,直接用了自带的sort函数,之后就是一共从后向前的循环,每三个为一组,若该组可以构成三角形,返回长度,不然跳出。
这里还有一个数学问题,为什么是连续的三个而不是中断的三个,这里假设有四个数字abcd,升序排列,先判断bcd,在判断abc,因为如果b+c<d,无法构成,那么a+c<b+c更无法构成了。

代码

  public static int largestPerimeter(int[] A) {
    Arrays.sort(A);
    for (int i = A.length - 1; i > 1; i--) {
      if (A[i] < A[i - 1] + A[i - 2]) {
        return A[i] + A[i - 1] + A[i - 2];
      }
    }
    return 0;
  }

原文地址:https://www.cnblogs.com/blogxjc/p/12262863.html

时间: 2024-10-10 12:43:38

LeetCode 976. Largest Perimeter Triangle的相关文章

LeetCode 976. Largest Perimeter Triangle (三角形的最大周长)

题目标签:Array 题目给了我们一个 边长的 array, 让我们找出 最大边长和的三角形,当然前提得是这三条边能组成三角形.如果array 里得边长组成不了三角形,返回0. 最直接的理解就是,找到三条最长的边,再判断是不是能够组成三角形,如果不行,继续去找更小得边. 所以维护三个max1,max2,max3,然后利用 “任意两边之和大于第三边” 来判断. 具体看code. Java Solution: Runtime beats 99.57% 完成日期:2/11/2019 关键点:“任意两边

【Leetcode_easy】976. Largest Perimeter Triangle

problem 976. Largest Perimeter Triangle solution: class Solution { public: int largestPerimeter(vector<int>& A) { sort(A.begin(), A.end());//decrease. for(int i=A.size()-1; i>1; i--) { if(A[i]<A[i-1]+A[i-2]) return A[i]+A[i-1]+A[i-2]; } re

「Leetcode」976. Largest Perimeter Triangle(C++)

分析 好久不刷题真的思维僵化,要考虑到这样一个结论:如果递增的三个数\(x_i,x_{i+1},x_{i+2}\)不符合题意,那么最大的两边之差一定大于等于第一条边,那么任何比第一条边小的都不能成立.这样一来,递增排序,然后线性找就可以了. 代码 class Solution { public: int largestPerimeter(vector<int>& A) { int ans=0; sort(A.begin(),A.end()); for(int i=A.size()-3;

[Swift Weekly Contest 118]LeetCode976. 三角形的最大周长 | 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: I

LeetCode (13) Pascal&#39;s Triangle (杨辉三角 )

题目描述 Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Return 从第三行开始,每行除了最左边和最右边两个数为1,其他数字都是上一行中相邻两个数字之和.根据上述规则可以写出下面的代码: class Solution { public: vector<vector<int> > generateRow1() { vector<in

Java [Leetcode 119]Pascal&#39;s Triangle II

题目描述: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3,3,1]. 解题思路: 每次在上一个list前面插入1,然后后面的每两个间相加赋值给前一个数. 代码描述: public class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> r

leetcode 【 Pascal&#39;s Triangle II 】python 实现

题目: 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? 代码:oj测试通过 Runtime: 48 ms 1 class Solution: 2 # @return a list of intege

leetcode 【 Pascal&#39;s Triangle 】python 实现

题目: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 代码:oj测试通过 Runtime: 46 ms 1 class Solution: 2 # @return a list of lists of integers 3 def generat

【LeetCode】Pascal&#39;s Triangle

Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 这题别想用通项公式做,n choose m里面的连乘必然溢出,老老实实逐层用定义做. class Solution { public: vector<vector<