给你一个数字数组 arr 。 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。 如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。
class Solution {
public boolean canMakeArithmeticProgression(int[] arr
) {
Arrays
.sort(arr
);
for(int i
= 0; i
< arr
.length
- 2; i
++){
if(arr
[i
+ 1] - arr
[i
] != arr
[i
+ 2] - arr
[i
+ 1])
return false;
}
return true;
}
}
时间复杂度:O(nlog n)。排序的时间代价为 O(nlogn),遍历序列的时间代价是O(n),故渐进时间复杂度为 O(nlog n + n) =O(nlogn)。 空间复杂度:O(logn)。快速排序中使用的栈空间期望是O(logn)。