0
点赞
收藏
分享

微信扫一扫

蓝桥杯 等差数列【java】

郝春妮 2022-03-14 阅读 89

  

 

import java.util.Arrays;
import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int length = sc.nextInt();
        
        //创建一个数组,存放数列
        int[] arr = new int[length];
        
        for(int i = 0; i < arr.length; i++) {
        	arr[i] = sc.nextInt();
        }
        
        //让数列从小到大排列
        Arrays.sort(arr);
       
        int cha = cha(arr);
        
        //因为有数列的最大值和最小值,又知道公差
        //所以公式:(最大值 - 最小值) /  公差  + 1
        //注意:当公差为0时,数列中的元素值都是一样的,这时最短的等差数列有length项
     System.out.println(cha == 0 ? length: (arr[length-1] - arr[0]) / cha + 1);
  
        
	}
	
	/**
	 * 寻找数列的公差
	 * @param arr 数组
	 * @return 公差值
	 */
	public static int cha(int[] arr) {
		//先定义一个最大值
		 int cha =  Integer.MAX_VALUE;
		 
		 //遍历数组
	     for(int i = 1; i < arr.length; i++) {
	    	 //寻找数列之间的公差
	    	 cha = Math.min(cha, arr[i] - arr[i-1]);
	     }
	
	     return cha;
	}

}
举报

相关推荐

0 条评论