成品網(wǎng)站源碼68w68網(wǎng)站seo設(shè)置是什么
題目:三角形的最大周長(zhǎng)
給定由一些正數(shù)(代表長(zhǎng)度)組成的數(shù)組arr,返回由其中三個(gè)長(zhǎng)度組成的、面積不為零的三角形的最大周長(zhǎng)。
如果不能形成任何面積不為零的三角形,返回`0。
分析:
- 對(duì)數(shù)組排序,再?gòu)拇蟮叫∵x擇三個(gè)數(shù),
- 再判斷是否能構(gòu)成三角形,可以直接返回三數(shù)之和,不能就把最大的數(shù)換掉,往小數(shù)的方向繼續(xù)找下一個(gè),更新三個(gè)數(shù)的位置,繼續(xù)判斷,找到一個(gè)就返回
import java.util.Arrays;
/*** @author: Arbicoral* @create: 2023-07-18 13:07* @Description: 三角形的最大周長(zhǎng)*/
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;}
}