"""
题目分析:
这题是中等难度,基本上就是不断循环判断过程
可以将查看是否是等差数列单独写成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)