Leetcode1502-判断能否形成等差数列|刷题打卡

134 阅读1分钟

本文正在参与掘金团队号上线活动,点击 查看大厂春招职位

一、题目描述

给你一个数字数组 arr

如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为等差数列

如果可以重新排列数组形成等差数列, 请返回 true ;否则,返回 false

示例 1 :

输入:arr = [3,5,1]
输出:true
解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列。

示例 2 :

输入:arr = [1,2,4]
输出:false
解释:无法通过重新排序得到等差数列。

二、思路分析

  1. 首先先对数组进行一个由小到大的排序。
  2. 其次直接利用题目中等差数列的性质进行解答,利用递归的方式依次判断数组里面的元素是否符合等差数列的判定条件即可。

三、AC 代码

class Solution:
    def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
        arr.sort()
        for i in range(1, len(arr) - 1):
            if arr[i] * 2 != arr[i - 1] + arr[i + 1]:
                return False
        return True

输出为:

image.png

四、总结

该题是直接利用了数学中的等差数列的性质进行解答的,对于同类型的题目,例如将题目中的等差数列改为等比数列,也可以利用等比数列的性质进行解答,可谓说学好数学,解决千道题目都不怕。