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)

 

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