博客
关于我
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 会导致锁表的语法
    查看>>
    mysql 使用sql文件恢复数据库
    查看>>
    mysql 修改默认字符集为utf8
    查看>>
    Mysql 共享锁
    查看>>
    MySQL 内核深度优化
    查看>>
    mysql 内连接、自然连接、外连接的区别
    查看>>
    mysql 写入慢优化
    查看>>
    mysql 分组统计SQL语句
    查看>>
    Mysql 分页
    查看>>
    Mysql 分页语句 Limit原理
    查看>>
    MySQL 创建新用户及授予权限的完整流程
    查看>>
    mysql 创建表,不能包含关键字values 以及 表id自增问题
    查看>>
    mysql 删除日志文件详解
    查看>>
    mysql 判断表字段是否存在,然后修改
    查看>>
    mysql 协议的退出命令包及解析
    查看>>
    mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
    查看>>
    mysql 多个表关联查询查询时间长的问题
    查看>>
    mysql 多字段删除重复数据,保留最小id数据
    查看>>
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>