A sequence of numbers is called an arithmetic progression if the difference between any two consecutive elements is the same.
Given an array of numbers arr
, return true
if the array can be rearranged to form an arithmetic progression. Otherwise, return false
.
Example 1:
Input: arr = [3,5,1]
Output: true
Explanation: We can reorder the elements as [1,3,5] or [5,3,1] with differences 2 and -2 respectively, between each consecutive elements.
Example 2:
Input: arr = [1,2,4]
Output: false
Explanation: There is no way to reorder the elements to obtain an arithmetic progression.
Constraints:
-
2 <= arr.length <= 1000
-
-106 <= arr[i] <= 106
SOLUTION:
from collections import Counter
class Solution:
def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
n = len(arr)
if n == 1:
return True
arr = Counter(arr)
a = min(arr)
b = max(arr)
d = (b - a) // (n - 1)
if d == 0 and len(arr) == 1:
return True
for i in range(n):
if arr[a + i * d] != 1:
return False
return True
Top comments (0)