题目描述:

给出你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);
    }
}