LeetCode | 2023.03.23 | 1630. 等差子數組

"""
題目分析:
    這題是中等難度,基本上就是不斷循環判斷過程
    可以將查看是否是等差數列單獨寫成def
理論:模擬
    1.定義初始變量數組長量->n和ans=[]
    2.循環數組,同時定義left,right值
    3.獲取臨時數組tmp,並從小->大排序
    4.自定義檢查函數def checkSequene
    4.1 計算等差數列值=tmp[1]-tmp[0]
    4.2 循環後續數組1~len(tmp)
    4.3 如果不是等差數列,返回False;
    4.4 否則循環完成後返回True
    5.返回結果清單ans
注意/難點:
    na
"""
class Solution:
    def checkArithmeticSubarrays(self, nums:list, l:list, r:list) ->list:
        ans=[]                                          #初始化變量
        #自定義檢查函數-檢查是否是等差序列
        def checkSequene(arr):
            diff=arr[1]-arr[0]                         #算等差數列值
            for i in range(1,len(arr)):
                if arr[i]-arr[i-1]!=diff:              #如果不是等差數列
                    return False
            return True

        for left,right in zip(l,r):               #循左右邊界值
            tmp=sorted(nums[left:right+1])        #獲取臨時數組tmp,並從小->大排序
            flag=checkSequene(tmp)                #返回等差序列檢看結果
            ans.append(flag)                      #結果記入列表
        return ans                                #返回值
        
nums = [4,6,5,9,3,7]
l = [0,0,2]
r = [2,3,5]
ans=Solution().checkArithmeticSubarrays(nums,l,r)
print(ans)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章