leetcode 1502. Can Make Arithmetic Progression From Sequence(python)

438 阅读1分钟

描述

Given an array of numbers arr. A sequence of numbers is called an arithmetic progression if the difference between any two consecutive elements is the same.

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.

Note:

  • 2 <= arr.length <= 1000
  • -10^6 <= arr[i] <= 10^6

解析

根据题意,只需要将 arr 先进行排序,然后判断是否是等差数列即可。遍历 arr 对相邻两个数作差,如果作差的结果都相等那么为 True, 否则为 False 。

解答

class Solution(object):
    def canMakeArithmeticProgression(self, arr):
        """
        :type arr: List[int]
        :rtype: bool
        """
        s = sorted(arr)
        diff = s[0] - s[1]
        for i in range(2, len(s)):
            if diff != s[i - 1] - s[i]:
                return False
        return True
        	      
		

运行结果

Runtime: 24 ms, faster than 83.72% of Python online submissions for Can Make Arithmetic Progression From Sequence.
Memory Usage: 13.7 MB, less than 22.48% of Python online submissions for Can Make Arithmetic Progression From Sequence.

原题链接:leetcode.com/problems/ca…

您的支持是我最大的动力

支付宝