1502.等差数列を移動できるかどうかを判断します

タイトルの説明:
数値配列arrを提供します。
シーケンス内の隣接する2つのアイテム間の差が常に同じ定数に等しい場合、そのシーケンスは等差数列と呼ばれます。
配列を再配置して等差数列を形成できる場合はtrueを返し、そうでない場合はfalseを返します。

例1:
入力:arr = [3,5,1]
出力:true
説明:配列を並べ替えて[1,3,5]または[5,3,1]を取得します。隣接する2つの項目の差はそれぞれ2です。または-2で等差数列を形成します。

例2:
入力:arr = [1,2,4]
出力:false
説明:並べ替えによって等差数列を取得できません。

入力:
2 <= arr.length <= 1000
-10 ^ 6 <= arr [i] <= 10 ^ 6

タイトルリンク:
https //leetcode-cn.com/problems/can-make-arithmetic-progression-from-sequence

問題解決のアイデア:
1。指定されたリストを並べ替えます
。2。最初の2つの項目の違いを見つけ
ます。3。順番にトラバースして、次の2つの項目の違いがこの違いと等しいかどうかを判断します。 、Return False
4と等しくない場合は、続行します。トラバーサルが完了し、いずれもFalseを返さない場合は、Trueを返します。

コード:

class Solution:
    def canMakeArithmeticProgression(self, arr):
        new_arr = sorted(arr)
        minus_value = new_arr[1] - new_arr[0]
        for i in range(1,len(new_arr)):
            if new_arr[i] - new_arr[i-1] == minus_value:
                continue
            else:
                return False
        return True

s = Solution()
print(s.canMakeArithmeticProgression([3,5,1]))

おすすめ

転載: blog.csdn.net/annlin2009/article/details/114129910