博客
关于我
leetcode题解976-三角形的最大周长
阅读量:803 次
发布时间:2023-01-31

本文共 939 字,大约阅读时间需要 3 分钟。

问题描述

给定一个由正数(代表长度)组成的数组 A,您需要找到其中三个长度,它们可以组成一个面积不为零的三角形,并且这个三角形的周长最大。如果不能找到这样的三角形,应返回0。

解题思路

为了找到面积不为零且周长最大的三角形,我们可以使用贪心算法。以下是详细的步骤:

  • 排序数组:首先对数组进行排序,以便更方便地找到最长的边。

  • 选择最长的三条边:从最大的三条边开始检查,判断是否满足三角形不等式。如果满足,这三条边即为答案;如果不满足,去掉最大的边,从剩下的三条边中重复检查。

  • 重复上述过程:每次去掉最大的边,选择剩下的三条边,直到满足三角形不等式或遍历结束。

  • 代码实现

    public class Solution {    public int largestPerimeter(int[] A) {        Arrays.sort(A);        int len = A.length;        int maxPerimeter = 0;        for (int i = len - 1; i >= 2; i--) {            if (A[i - 2] + A[i - 1] > A[i]) {                maxPerimeter = A[i] + A[i - 1] + A[i - 2];                break;            }            i--;        }        return maxPerimeter;    }}

    结果分析

    • 示例1:输入:[2, 1, 2]排序后:1, 2, 2最长的三边为2,2,1。检查:2 + 1 > 2 成立,周长5。
    • 示例2:输入:[1, 2, 1]排序后:1, 1, 2检查发现1 + 1 ≤ 2,无法组成三角形,返回0。
    • 示例3:输入:[3, 2, 3, 4]排序后:2, 3, 3, 4最长的三边4,3,3。检查:3 + 3 > 4 成立,周长10。
    • 示例4:输入:[3,6,2,3]排序后:2, 3, 3, 6最长的三边6,3,3。检查:3 + 3 ≤ 6,不满足。去掉6,检查3,3,2:3 + 2 > 3,周长8。

    转载地址:http://urgyk.baihongyu.com/

    你可能感兴趣的文章
    MySQL中的GROUP_CONCAT()函数详解与实战应用
    查看>>
    MySQL中的IO问题分析与优化
    查看>>
    MySQL中的ON DUPLICATE KEY UPDATE详解与应用
    查看>>
    mysql中的rbs,SharePoint RBS:即使启用了RBS,内容数据库也在不断增长
    查看>>
    mysql中的undo log、redo log 、binlog大致概要
    查看>>
    Mysql中的using
    查看>>
    MySQL中的关键字深入比较:UNION vs UNION ALL
    查看>>
    mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
    查看>>
    mysql中的字段如何选择合适的数据类型呢?
    查看>>
    MySQL中的字符集陷阱:为何避免使用UTF-8
    查看>>
    mysql中的数据导入与导出
    查看>>
    MySQL中的时间函数
    查看>>
    mysql中的约束
    查看>>
    MySQL中的表是什么?
    查看>>
    mysql中穿件函数时候delimiter的用法
    查看>>
    Mysql中索引的分类、增删改查与存储引擎对应关系
    查看>>
    Mysql中索引的最左前缀原则图文剖析(全)
    查看>>
    MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
    查看>>
    Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
    查看>>
    Mysql中视图的使用以及常见运算符的使用示例和优先级
    查看>>