Java 查找正整数数组是否形成闭合多边形
我有一个非负整数数组,我需要找到它们是否形成闭合多边形。(元素的顺序无关紧要) 数组的元素表示边长 在解决了这个问题后,我想出了以下解决办法 设n表示数组的长度Java 查找正整数数组是否形成闭合多边形,java,Java,我有一个非负整数数组,我需要找到它们是否形成闭合多边形。(元素的顺序无关紧要) 数组的元素表示边长 在解决了这个问题后,我想出了以下解决办法 设n表示数组的长度 对于n=3:-我需要检查3个元素是否形成三角形。(已完成) 对于n=大于3的偶数:-我需要检查所有元素是否至少有一对相等。(已完成) 例如arr={2,3,4,4,3,2}:-它将形成一个闭合多边形 对于n的其余值,我有一个问题 请帮帮我。 如果有其他优化的解决方案,请告诉我 对不起,对于n=偶数且大于3,我认为我的解决方案是错
- 对于n=3:-我需要检查3个元素是否形成三角形。(已完成)
- 对于n=大于3的偶数:-我需要检查所有元素是否至少有一对相等。(已完成)
- 对于n的其余值,我有一个问题
以下是答案中所示算法的两个java实现和链接:
公共静态布尔校验ValidClosedPolygon1(int[]线宽){
int maxLineLength=Arrays.stream(lineLength).max().getAsInt();
int halfOfsum=IntStream.of(线宽).sum()/2;
返回maxLineLength
此数组中的元素代表什么?它们代表边长吗?@LakshayGarg是的,它们代表边长。你可能想看看,谢谢,所以我需要两个循环,一个用于添加,另一个用于检查。是的,这是一种方法。
public static boolean checkValidClosedPolygon1(int[] lineLengths) {
int maxLineLength = Arrays.stream(lineLengths).max().getAsInt();
int halfOfsum = IntStream.of(lineLengths).sum() / 2;
return maxLineLength < halfOfsum;
}
public static boolean checkValidClosedPolygon2(int[] lineLengths) {
int maxLineLength = Arrays.stream(lineLengths).max().getAsInt();
int sumMinusMax = IntStream.of(lineLengths).sum() - maxLineLength;
return maxLineLength < sumMinusMax;
}