其乘积为偶数的子数组的数量?
number of subarrays whose product is even?
给定一个大小为 n 的数组,n<=10^5 计算乘积为偶数的子数组数量的有效方法是什么?
我正在使用 (On^3) 时间复杂度的天真方法?
请提出一些有效的方法?
注意:根据你的解释,我的印象是你正在获取所有子数组,计算乘积并检查它是否偶数。
但是有一个非常重要的数学规则:当你有一系列自然数时,只要有一个偶数,乘积就是偶数。
所以,我建议您编写以下算法:
- 在数组中搜索偶数。
- 计算包含该偶数的子数组的数量。
- 在数组中搜索下一个偶数。
- 计算子数组的数量,包含下一个偶数,但不包含前一个偶数。
- 继续,直到处理完数组中的所有偶数。
给定一个大小为 n 的数组,n<=10^5 计算乘积为偶数的子数组数量的有效方法是什么? 我正在使用 (On^3) 时间复杂度的天真方法? 请提出一些有效的方法?
注意:根据你的解释,我的印象是你正在获取所有子数组,计算乘积并检查它是否偶数。
但是有一个非常重要的数学规则:当你有一系列自然数时,只要有一个偶数,乘积就是偶数。
所以,我建议您编写以下算法:
- 在数组中搜索偶数。
- 计算包含该偶数的子数组的数量。
- 在数组中搜索下一个偶数。
- 计算子数组的数量,包含下一个偶数,但不包含前一个偶数。
- 继续,直到处理完数组中的所有偶数。