題目:三角形的最大周長
給定由一些正數(shù)(代表長度)組成的數(shù)組arr,返回由其中三個長度組成的、面積不為零的三角形的最大周長。
如果不能形成任何面積不為零的三角形,返回`0。文章來源:http://www.zghlxwxcb.cn/news/detail-659408.html
分析:文章來源地址http://www.zghlxwxcb.cn/news/detail-659408.html
- 對數(shù)組排序,再從大到小選擇三個數(shù),
- 再判斷是否能構(gòu)成三角形,可以直接返回三數(shù)之和,不能就把最大的數(shù)換掉,往小數(shù)的方向繼續(xù)找下一個,更新三個數(shù)的位置,繼續(xù)判斷,找到一個就返回
import java.util.Arrays;
/**
* @author: Arbicoral
* @create: 2023-07-18 13:07
* @Description: 三角形的最大周長
*/
public class GreedyByMaxPerimeter {
public static void main(String[] args) {
System.out.println(maxPerimeter(new int[]{3,6,2,3,8,5,9,10,1}));
}
private static int maxPerimeter(int[] arr) {
Arrays.sort(arr);
int a,b,c;// a:第三大 b:次大 c:最大
for (int i = arr.length-1; i>1; i--) {
c = arr[i];
b = arr[i-1];
a = arr[i-2];
if (isTriangle(a,b,c)){
System.out.println("三角形的三邊分別為:"+a+"\t"+b+"\t"+c);
return a+b+c;
}
}
return -1;
}
/**
* 判斷 a b c 能否組成三角形,其中 a < b < c
* 判斷條件:兩邊之和 > 第三邊
*/
private static boolean isTriangle(int a, int b, int c) {
return a + b > c;
}
}
到了這里,關(guān)于貪心算法求數(shù)組中能組成三角形的最大周長的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!