zoukankan      html  css  js  c++  java
  • 976. Largest Perimeter Triangle--Easy

    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

    1.思考

    • 定理:三角形任意两条边之和都大于第三边;
    • 通过上面这条定理来确定某三条边是否能够组成三角形;
    • 先对所有边进行长度的排序,从最长边开始,验证上面定理是否成立,从而得到周长。

    2.实现
    Runtime: 52ms(84.11%)
    Memory: 10.5MB(98.15%)

    class Solution {
    public:    
        int largestPerimeter(vector<int>& A) {
            sort(A.begin(), A.end());
            int len = A.size();
            int res = 0;
            
            for(int i=len-3; i>=0 ; i--){
                if(A[i]+A[i+1]>A[i+2]){
                    return A[i]+A[i+1]+A[i+2];
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    迷宫寻找路径数
    136. 只出现一次的数字
    48. 旋转图像
    283. 移动零
    面试题 01.06. 字符串压缩
    位运算符
    367. 有效的完全平方数
    868. 二进制间距
    SpringAOP表达式
    Mybatis常见错误及纠错
  • 原文地址:https://www.cnblogs.com/xuyy-isee/p/11303421.html
Copyright © 2011-2022 走看看