题目描述:
给出你n条长度不一的边,请你从中选择四条边,组成一个最大的平行四边形。请你输出最大的平行四边形的面积。
输入描述
输入第一行包含一个正整数n,表示边的数量。(4<=n<=50000)
输入第二行包含n个正整数,表示n条边的长度,边的长度不会超过10^9。
输出描述
输出仅包含一个正整数,即最大的平行四边形的面积,无解则输出-1。
样例输入
5
3 3 4 4 5
样例输出
12
思路
- 从小到大排序
- 选出出现两次的边,并去重
package com.yyc.test;
import java.util.*;
public class Test {
public static void main(String[] args) {
int n = 5;
int[] nums = new int[]{3, 3, 4, 4, 5};
Arrays.sort(nums);
Set<Integer> set = new LinkedHashSet<>();//有序,防止重复
for (int i = 1; i < n; i++) {
if (nums[i] == nums[i - 1]) {//统计成对出现的边
set.add(nums[i]);
}
}
Iterator<Integer> iterator = set.iterator();
int res = 0;
int a = iterator.next();
while (iterator.hasNext()) {
int b = iterator.next();
res = Math.max(res, a * b);
a = b;
}
System.out.println(res);
}
}