题目描述
数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N 个整数。
现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差数列有几项?
输入
输入的第一行包含一个整数N。
第二行包含N 个整数A1.A2,..., AN。(注意A1<=AN 并不一定是按等差数列中的顺序给出)
2<=N<=100000,0<=Ai<=10^9
输出
输出一个整数表示答案。
样例输入 Copy
5
2 6 4 10 20
样例输出 Copy
10
很简单的题目:
思路: 1 获取输入的数据,存入数组
2 然后获取两个数之间的最小的的差值( 这个就是我们的 公差 d )
3 最端需要的长度 ( 最大值-最小值)/公差 +1
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int [] arr=new int[n];
//处理输入
for(int i=0;i<arr.length;i++) {
arr[i]=scanner.nextInt();
}
long min=Integer.MAX_VALUE;
//一定要排序 不然有负数作为 差
Arrays.sort(arr);
for(int i=0;i<arr.length-1;i++) {
//记录最小的公差
if((arr[i+1]-arr[i])<min){
min=arr[i+1]-arr[i];
}
}
//获取序列长度
long ans=(arr[arr.length-1]-arr[0])/min+1;
System.out.println(ans);
}
}