等差数列中
a
n
=
a
0
+
n
∗
d
a_n = a_0 + n * d
an=a0+n∗d。
从arr[1]开始遍历,如果出现arr[i] != (arr[0] + i * d),那么这个数列一定不是等差数列
如果所有的arr[i]都满足arr[i] == (arr[0] + i * d),那么一定是一个等差数列
AC代码
classSolution{publicbooleancanMakeArithmeticProgression(int[] arr){
Arrays.sort(arr);int d = arr[1]- arr[0];for(int i =1; i < arr.length; i++){if(arr[i]!=(arr[0]+ i * d))returnfalse;}returntrue;}}
本地测试代码
package com.company;import java.util.Arrays;publicclassSolution_1502{publicstaticbooleancanMakeArithmeticProgression(int[] arr){
Arrays.sort(arr);int d = arr[1]- arr[0];for(int i =1; i < arr.length; i++){if(arr[i]!=(arr[0]+ i * d))returnfalse;}returntrue;}publicstaticvoidmain(String[] args){
System.out.println(canMakeArithmeticProgression(newint[]{3,5,1}));
System.out.println(canMakeArithmeticProgression(newint[]{1,2,4}));}}