贪心算法之最长三角形周长(力扣)

给定由一些正数(代表长度)组成的数组 nums ,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0。
示例 1:
输入:nums = [2,1,2]
输出:5
示例 2:
输入:nums = [1,2,1]
输出:0
import java.util.Arrays;
import java.util.Scanner;
/*
给定由一些正数(代表长度)组成的数组 nums,返回 由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。
示例 1:
输入:nums = [2,1,2]
输出:5
示例 2:
输入:nums = [1,2,1]
输出:0
 */
public class 贪心算法_三角形最长周长 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();//输入数组长度
		int []nums=new int[n];
		for(int i=0;i<nums.length;i++) {
			nums[i]=sc.nextInt();//输入数组元素
		}
		System.out.println(largestPerimeter(nums));
		sc.close();
	}
	public static int largestPerimeter(int[] nums) {
		Arrays.sort(nums);//快排,升序
		for(int i=nums.length-1;i>=2;--i) {//倒序
			if((nums[i-1]+nums[i-2])>nums[i]) {//如果第二大的数加第三大的数比最大的数大,一直找最大的两个数相加,即找到局部最优解,便是贪心算法
				 return nums[i-1]+nums[i-2]+nums[i];//则返回这个最长周长
			}
		}
		return 0;//如果不能形成任何面积不为零的三角形,返回0。

    }
}

猜你喜欢

转载自blog.csdn.net/qq_62731133/article/details/123959205