zoukankan      html  css  js  c++  java
  • 刷题-力扣-976. 三角形的最大周长

    976. 三角形的最大周长

    题目链接

    来源:力扣(LeetCode)
    链接: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

    题目分析

    1. 根据题目描述计数组中可以构成的周长最大的三角形的周长
    2. 先对数组按递减排序,取最大的三条边判断是否可以构成三角形,否则将最长的边换为次长的边

    代码

    class Solution {
    public:
        int largestPerimeter(vector<int>& nums) {
            if (nums.size() < 3) { return 0; }
            int first = 0;
            int second = 1;
            int third = 2;
            std::sort(nums.begin(), nums.end(), [] (int a, int b) -> bool { return a > b; });
            while (third < nums.size()) {
                if (nums[third] + nums[second] > nums[first] && abs(nums[third] - nums[second]) < nums[first]) { return nums[first] + nums[second] + nums[third]; }
                first = second;
                second = third;
                ++third;
            }
            return 0;
        }
    };
    
  • 相关阅读:
    ubuntu下mysql的安装
    useradd和adduser的区别
    C和指针之学习笔记(6)
    C和指针之学习笔记(5)
    C和指针之学习笔记(4)
    Centos 7搭建Gitlab服务器超详细
    .NET Core sdk和runtime区别
    .NET平台历程介绍
    GitLabCICD
    Jenkins+gitlab+msbuild
  • 原文地址:https://www.cnblogs.com/HanYG/p/15368892.html
Copyright © 2011-2022 走看看