タイトルの説明:
数値配列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]))