博客
关于我
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修改root密码的各种方法
    查看>>
    MySQL修改root密码的多种方法
    查看>>
    mysql修改一列属性
    查看>>
    MySQL修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘
    查看>>
    Mysql全局优化参数
    查看>>
    MySQL全文索引实现简单版搜索引擎
    查看>>
    MySQL全面瓦解:安装部署与准备
    查看>>
    mysql共享锁与排他锁
    查看>>
    MySQL内存表使用技巧
    查看>>
    MySQL再叙(体系结构、存储引擎、索引、SQL执行过程)
    查看>>
    mysql出现错误的解决办法
    查看>>
    MySQL函数
    查看>>
    mysql函数汇总之字符串函数
    查看>>
    mysql函数汇总之数学函数
    查看>>
    mysql函数汇总之日期和时间函数
    查看>>
    mysql函数汇总之条件判断函数
    查看>>
    mysql函数汇总之系统信息函数
    查看>>
    MySQL函数简介
    查看>>