Leetcode 1502. Can Make Arithmetic Progression From Sequence

文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡(jiǎn)書

1. Description

Can Make Arithmetic Progression From Sequence

2. Solution

解析:Version 1,先排序,再判斷其是否是算術(shù)(等差)數(shù)組。Version 2以空間換時(shí)間,找出最大最小值,最大最小值相等,則數(shù)全相同為等差數(shù)列,如果最大最小值之差不能整除數(shù)組長(zhǎng)度減1,說明是非等差數(shù)列。構(gòu)造等差數(shù)列,判斷其是否是數(shù)組中的元素。

  • Version 1
class Solution:
    def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
        if len(arr) == 2:
            return True
        arr.sort()
        for i in range(2, len(arr)):
            if arr[i] - arr[i-1] != arr[i-1] - arr[i-2]:
                return False
        return True
  • Version 2
class Solution:
    def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
        if len(arr) == 2:
            return True
        stat = {}
        minimum = arr[0]
        maximum = arr[0]
        for x in arr:
            minimum = min(minimum, x)
            maximum = max(maximum, x)
            stat[x] = x
        if maximum - minimum == 0:
            return True
        if (maximum - minimum) % (len(arr) - 1) != 0:
            return False
        step = (maximum - minimum) // (len(arr) - 1)
        for x in range(minimum, maximum+1, step):
            if x not in stat:
                return False
        return True

Reference

  1. https://leetcode.com/problems/can-make-arithmetic-progression-from-sequence/
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容