三角形的最大周长Java版(力扣)

简介: 三角形的最大周长Java版(力扣)

三角形的最大周长


给定由一些正数(代表长度)组成的数组 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


题意:就是让我们从给定的数组中挑出三个数组成周长最大的三角形,输出这个最大的周长,如果不能构成三角形,输出0。


思路:我们可以贪心来做,首先对这个数组排序,然后从大到小遍历找到符合的就return。


满足以下情况就是符合的:

假设:a > b > c

只要 b+c > a 就可以证明a,b,c可以构成一个三角形。

详细解释:

因为:a > b > c

所以: a+b > c 和 a+c > b 是成立的

所以:只要 b+c > a 就可以证明a,b,c可以构成一个三角形。

我们把数组从大到小遍历,这样第一个符合情况的三角形就一定是周长最大的了。


详细代码:


package com.Keafmd.day29;
import java.util.Arrays;
/**
 * Keafmd
 *
 * @ClassName: LargestPerimeterTriangle
 * @Description: 三角形的最大周长
 * @Author: 牛哄哄的柯南
 * @Date: 2020/11/29 19:49
 **/
public class LargestPerimeterTriangle {
    /*定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
    如果不能形成任何面积不为零的三角形,返回 0。*/
    public static void main(String[] args) {
        Solution solution = new Solution();
        int []arr = new int[]{3,2,3,4};
        int result = solution.largestPerimeter(arr);
        System.out.println(result);
    }
}
// ***************这下面是提交的代码,上面的是方便自己测试用***********
class Solution {
    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        for (int i = A.length - 1; i >= 2; i--) {  //注意这里 i>= 2
            if (A[i] < A[i - 1] + A[i - 2]) {
                return A[i] + A[i - 1] + A[i - 2];
            }
        }
        return 0;
    }
}

运行结果:


10
Process finished with exit code 0
相关文章
|
5月前
|
Java
383. 赎金信 --力扣 --JAVA
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能c里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。
40 1
|
2月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
39 6
|
4月前
|
Java
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
|
5月前
|
存储 Java
JAVA数据结构刷题 -- 力扣二叉树
JAVA数据结构刷题 -- 力扣二叉树
49 0
|
5月前
|
Java Go C++
Rust每日一练(Leetday0024) 爬楼梯、简化路径、编辑距离
Rust每日一练(Leetday0024) 爬楼梯、简化路径、编辑距离
62 0
Rust每日一练(Leetday0024) 爬楼梯、简化路径、编辑距离
|
5月前
|
安全 Java
1599. 经营摩天轮的最大利润 -- 力扣 --JAVA
你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但每次轮转都需要支付一定的运行成本 runningCost 。摩天轮每次轮转都恰好转动 1 / 4 周。 给你一个长度为 n 的数组 customers , customers[i] 是在第 i 次轮转(下标从 0 开始)之前到达的新游客的数量。这也意味着你必须在新游客到来前轮转 i 次。每位游客在登上离地面最近的座舱前都会支付登舱成本 boardingCost ,一旦该座舱再次抵达地面,他们就会离开座舱结束游玩。 你可以随时停下摩天轮,即便是 在服务所有游客之前 。如果你决定
76 1
|
5月前
|
Java
杨辉三角形(二维坐标基础题)——Java-二维数组版本
杨辉三角形(二维坐标基础题)——Java-二维数组版本
39 0
|
5月前
|
Java
2696. 删除子串后的字符串最小长度 --力扣 --JAVA
给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作,删除所有 "AB" 和 "CD" 子串,返回可获得的最终字符串的 最小 可能长度。 注意,删除子串后,重新连接出的字符串可能会产生新的 "AB" 或 "CD" 子串。
32 0
|
5月前
|
Java
2487. 从链表中移除节点 --力扣 --JAVA
给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。
54 0
|
5月前
|
Java
100166. 检查按位或是否存在尾随零 --力扣 --JAVA
给你一个 正整数 数组 nums 。 你需要检查是否可以从数组中选出 两个或更多 元素,满足这些元素的按位或运算( OR)结果的二进制表示中 至少 存在一个尾随零。 例如,数字 5 的二进制表示是 "101",不存在尾随零,而数字 4 的二进制表示是 "100",存在两个尾随零。 如果可以选择两个或更多元素,其按位或运算结果存在尾随零,返回 true;否则,返回 false 。
53 0
下一篇
无影云桌面