1 问题: 求每个问题下的子数组个数
- 某人生日12/23, 因此对12和23这两个数字情有独钟.
- 给定一维数组nums (1×n) 和二维数组questions (m×3)
- 对questions中每一个question (1×3), 其中
- i=question[0]代表nums的起始点,
- j=quesiton[1]代表nums的结束点,
- k=question[2]要么等于12,要么等于23.
求数组 nums[i:j+1] 的满足以下要求的子数组数量: 该子数组和可被12或23整除
子数组是原数组的连续非空序列
1.1 输入:
1.2 输出:
(ans.length=questions.length), ans[i]代表对questions[i]的计算
1.3 Constraints:
- 1 <= nums.length <= 6000
- 1 <= questions.length <= 2×106
- questions[i][0]<questions[i][1]
- quesitons[i][2] 等于12 或23
2 解决方法
本题可拆分成子问题:
- 如果只有一个question, 那么对于nums[i:j+1] 和k ,问题可转换为leetcode原题
974. 和可被 K 整除的子数组
- 我们对questions中的每个question计算一遍即可
但最后, 部分案例超时, 因为quesitons太多, 所以该怎么预处理呢?