再隨便挑一題來寫
3152. Special Array II
給你一個array 還有一堆query: q[i] = [s_i, e_i]
每個query要回傳arr[s_i:e_i+1]是不是"special array"
special的定義是 每個相鄰pair不可同時為奇數或偶數
簡單來說就是要 奇偶相間
init一個array 第i個element是 其往左找"連續奇偶相間數列"的開始點
其實就是for loop下去 遇到相鄰都是奇數or相鄰都是偶數的pair就更新start_i
如果持續奇偶相間的話就不更新start_i這樣
最後就單純一個if就有答案了
def isArraySpecial(self, nums: List[int], queries: List[List[int]]) ->
List[bool]:
mem = [-1 for _ in range(len(nums))]
start_i = 0
pre = -1
for i,k in enumerate(nums):
if k%2 == pre:
start_i = i
else:
pre = k%2
mem[i] = start_i
ans = [ mem[q[1]] <= mem[q[0]] for q in queries ]
return ans