python判断能否形成等差数列
生活随笔
收集整理的這篇文章主要介紹了
python判断能否形成等差数列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
|判斷能否形成等差數列
給你一個數字數組 arr 。如果一個數列中,任意相鄰兩項的差總等于同一個常數,那么這個數列就稱為 等差數列 。如果可以重新排列數組形成等差數列,請返回 true ;否則,返回 false 。示例 1:輸入:arr = [3,5,1] 輸出:true 解釋:對數組重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相鄰兩項的差分別為 2 或 -2 , 可以形成等差數列。 示例 2:輸入:arr = [1,2,4] 輸出:false 解釋:無法通過重新排序得到等差數列。提示:2 <= arr.length <= 1000 -10^6 <= arr[i] <= 10^6題解
class Solution:"""解題思路: 1.先排序,再判斷是否為等差數列1.直接使用sort 函數"""def canMakeArithmeticProgression(self, arr: List[int]) -> bool:length = len(arr)if length <= 2:return Truearr.sort()return all([arr[i] - arr[i-1] == arr[-1] - arr[-2] for i in range(length-1, 0, -1)])class Solution:"""解題思路: 1.先排序,再判斷是否為等差數列2.手動實現快排"""def canMakeArithmeticProgression(self, arr: List[int]) -> bool:length = len(arr)if length <= 2:return Trueself.quick_sort(arr, 0, length-1)return all([arr[i] - arr[i-1] == arr[-1] - arr[-2] for i in range(length-1, 0, -1)])def quick_sort(self, arr, first, last):# 初始化p, q指針if first >= last:returnp, q = first, lastwhile q > p:if arr[p] < arr[first]:p += 1elif arr[q] >= arr[first]:q -= 1else:arr[p], arr[q] = arr[q], arr[p]arr[q] = arr[first]# 對比左側元素self.quick_sort(arr, first, q-1)self.quick_sort(arr, q+1, last)總結
以上是生活随笔為你收集整理的python判断能否形成等差数列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 有效的字母异位词
- 下一篇: python 合并区间