LeetCode976 三角形的最大周长(Java排序简单应用-防自闭题)

Posted sykline

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode976 三角形的最大周长(Java排序简单应用-防自闭题)相关的知识,希望对你有一定的参考价值。

题目:

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。

如果不能形成任何面积不为零的三角形,返回 0。

 

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/largest-perimeter-triangle

思路:
我们将数组A按从大到小的顺序排序,然后从头往后三个三个的撸,只要这三个中较小的两个的和大于最大就可以组成一个三角形。
简单分析一下为什么只用考虑两个的和大于最大的就可以:
假设有a<b<c<d<e,取其中的c,d,e,d-c的最大值是d(即c为0的时候),而d又小于e,所以d-c小于e是恒成立的。
 
代码:
import java.util.*;
import java.math.*;

class Solution {
    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        for(int i=A.length-3; i>=0; i--){
            if(A[i]+A[i+1] > A[i+2]){
                return A[i]+A[i+1]+A[i+2];
            }
        }
        return 0;
    }
}
public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] A = new int[n];
        for(int i=0; i<n; i++){
            A[i] = scanner.nextInt();
        }
        Solution solution = new Solution();
        System.out.println(solution.largestPerimeter(A));
    }
}

 

 

以上是关于LeetCode976 三角形的最大周长(Java排序简单应用-防自闭题)的主要内容,如果未能解决你的问题,请参考以下文章

力扣(LeetCode)976. 三角形的最大周长

LeetCode 976. Largest Perimeter Triangle (三角形的最大周长)

976. 三角形的最大周长『简单』

LeetCode 976. Largest Perimeter Triangle

976. 三角形的最大周长

LC976 三角形的最大周长