给定由一些正数(代表长度)组成的数组 nums
,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0
。
示例 1:
输入:nums = [2,1,2] 输出:5 解释:你可以用三个边长组成一个三角形:1 2 2。
class Solution {
public int largestPerimeter(int[] nums) {
Arrays.sort(nums);
for (int i = nums.length-1; i >=2; i--) {
//所有数字都已经排序,三个边一定相邻
int a=nums[i];
int b=nums[i-1];
int c=nums[i-2];
//三条边能否构成三角形只需要任意两边之和大于第三边或者之差小于第三边,不需要两个都满足
if(b+c>a) return a+b+c;//a是三个数中最大数,所以a+?>?一定成立,无需判断
}
return 0;
}
}