先找到奇偶性不同的数据下标,取他们中间的数字 再将需要判断的子数组的下标插入到该奇偶性不同的数组数据中,他们的下标不相同则一定包含了不是特殊数组的值
import bisect
from typing import List
class Solution:
def isArraySpecial(self, nums: List[int], queries: List[List[int]]) -> List[bool]:
not_special_index = []
is_odd = nums[0] % 2 == 0
for i in range(1, len(nums)):
odd = nums[i] % 2 == 0
if odd == is_odd:
not_special_index.append(i - 0.5)
is_odd = odd
result = [True] * len(queries)
if not not_special_index:
return result
for index, query in enumerate(queries):
[start, end] = query
start_index = bisect.bisect_left(not_special_index, start)
end_index = bisect.bisect_right(not_special_index, end)
if start_index != end_index:
result[index] = False
return result