leetcode:1502. 判断能否形成等差数列

tech2022-08-14  133

给你一个数字数组 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)。

最新回复(0)