先排序,然后两两数之间相减得到这个结果的次数最多的就是公差。
然后再用(数组最大值-最小值)/公差 + 1 就是项数。
import java.util.ArrayList;
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
TreeSet<Integer> treeSet = new TreeSet<>();
for (int i = 0; i < n; i++) {
treeSet.add(scan.nextInt());
}
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i : treeSet){
arrayList.add(i);
}
int [][] res = new int[n/2][2];
int left = 0;
int right = 1;
while(right<treeSet.size()){
int cha = arrayList.get(right)-arrayList.get(left);
for (int i = 0; i < res.length; i++) {
if(res[i][0] == 0){
res[i][0] = cha;
res[i][1]++;
break;
}else if(res[i][0] == cha){
res[i][1]++;
break;
}
}
left++;
right++;
}
int Cha = 0;
int count = 0;
for (int i = 0; i < res.length; i++) {
if( res[i][0]!=0 && res[i][1]>count){
count = res[i][1];
Cha = res[i][0];
}
}
if(Cha == 0){
System.out.println(n);
}else {
System.out.println((arrayList.get(arrayList.size()-1)-arrayList.get(0))/Cha + 1);
}
}
}