子数组和问题,和被元素个数整除
来源:互联网 发布:c语言pow什么意思 编辑:程序博客网 时间:2024/05/10 07:52
类似问题:子数组和被10整除。
给你一个数组,要求找出一个子数组,使得该子数组的和可以被整个数组的元素个数整除。例如,下面的数组有10个元素,子数组A[3]+A[4]+A[9] mod 10 = 0.
思路:
设prefix_sum[j] = ( A[0] + A[1] + ... + A[j] ) mod n. 其中,n是A中元素的个数。
那么
case1:prefix_sum[j],j = 0,1,...,n-1,都是不相等的,而且存在一个prefix_sum[j] = 0.
case2:存在prefix_sum[a] = prefix[b], a<b.
所以
case1:0到j构成的子数组就是所求数组。
case2:a+1到b构成的子数组就是所求数组。
代码如下:
vector<int> find_0_sum_subset(const vector<int> &A) {vector<int> prefix_sum(A);for (int i = 0; i < A.size(); ++i) {if (i - 1 >= 0)prefix_sum[i] += prefix_sum[i - 1];prefix_sum[i] %= A.size();}vector<int> table(A.size(), -1);vector<int> ans;for (int i = 0; i < A.size(); ++i) {if (prefix_sum[i] == 0) {for (int j = 0; j <= i; ++j)ans.push_back(j);return ans;} else if (table[prefix_sum[i]] != -1) {for (int j = table[prefix_sum[i]] + 1; j <= i; ++j) ans.push_back(j);return ans;}table[prefix_sum[i]] = i;}}
- 子数组和问题,和被元素个数整除
- 子数组和问题,和被10整除
- 子数组和问题,和被某个数整除
- XMU 1350.幸运数组 连续子数组被k整除的个数 STL
- 计算数组元素个数和计算字符串数组元素个数方法
- 数组元素判断和问题
- 子数组最大和问题
- 子数组最大和问题
- 最大子数组和问题
- 子数组最大和问题
- 最大子数组和问题
- 数组-子数整除
- 统计数组元素个数:count()、sizeof()和array_values()
- js获取数组元素个数和对象成员数
- 堆的使用,输入数组个数和元素,求平均值
- Java打印数组中不重复的元素和个数
- 通过父元素和子元素的class类,获取该同类子元素的数组
- 求最大子数组/子序列/子段和问题
- 一辈子是场修行 短的是旅行 长的是人生
- Device Driver Development for Beginners - Reloaded
- 实现重定向
- 子数组和问题,和被10整除
- String的Split()
- 子数组和问题,和被元素个数整除
- springMVC3.0后台验证信息不显示的原因初探
- Yii数据访问对象DAO操作数据库
- ContextLoaderListener 和 DispatcherServlet
- 年前--春节前一周怎么过
- why ApplicationContextAware?
- 访问基类的私有虚函数
- leetcode 66: Convert Sorted List to Binary Search Tree
- 58(80)---windows internals 6 mark david alex