题目链接:
思路:
先对原数组排序(代码中用的快排模板),然后利用等差数列的性质:前后两个数的差值相同。
遍历排序后的数组,若不满足上述性质输出false,反之输出true
代码:
class Solution {
public boolean canMakeArithmeticProgression(int[] arr) {
quickSort(arr,0,arr.length-1);
int d = arr[1]-arr[0];
for(int i = 1;i<arr.length-1;i++) {
if(arr[i+1]-arr[i]!=d)
return false;
}
return true;
}
public static void quickSort(int[] q,int l,int r) {
if(l>=r) return ;
int x = q[(l+r)/2];
int i = l-1,j = r+1;
while(i<j) {
while(q[++i]<x);
while(q[--j]>x);
if(i<j) {
int t = q[i];
q[i] = q[j];
q[j] = t;
}
}
quickSort(q,l,j);
quickSort(q,j+1,r);
}
}