"""
題目分析:
這題是中等難度,基本上就是不斷循環判斷過程
可以將查看是否是等差數列單獨寫成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)