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

时间:2021-05-12 22:59:49

题目标签:Array

  题目给了我们一个 边长的 array, 让我们找出 最大边长和的三角形,当然前提得是这三条边能组成三角形。如果array 里得边长组成不了三角形,返回0。

最直接的理解就是,找到三条最长的边,再判断是不是能够组成三角形,如果不行,继续去找更小得边。

所以维护三个max1,max2,max3,然后利用 “任意两边之和大于第三边” 来判断。

具体看code。

Java Solution:

Runtime beats 99.57%

完成日期:2/11/2019

关键点:“任意两边之和大于第三边”

 class Solution
{
public int largestPerimeter(int[] A)
{
int max1 = -1;
int max2 = -1;
int max3 = -1;
boolean triangleFormed = false;
int prevMax = Integer.MAX_VALUE; do {
max1 = -1;
max2 = -1;
max3 = -1;
// iterate A to get 3 max numbers
for(int max : A)
{
if(max > max1 && max < prevMax)
{
max3 = max2;
max2 = max1;
max1 = max;
}
else if(max > max2 && max < prevMax)
{
max3 = max2;
max2 = max;
}
else if(max > max3 && max < prevMax)
{
max3 = max;
}
} // validate 3 numbers can form triangle
triangleFormed = validateTriangle(max1, max2, max3); if(!triangleFormed)
prevMax = max1; if(max1 < 0 || max2 < 0 || max3 < 0)
return 0; } while(!triangleFormed); return max1 + max2 + max3;
} private boolean validateTriangle(int a, int b, int c)
{
if(a + b <= c)
return false;
else if(b + c <= a)
return false;
else if(c + a <= b)
return false; return true;
}
}

参考资料:N/A

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/