1 一般问题:求一个数组A中和为target的子数组个数。元素可正可负,元素无序
两个条件:
1)元素是任意数还是都是正数
2)数组A是否有序
求前缀和数组B,问题转化为,数组B求差等于target的两个数的方案个数,即2Minus问题。
2Minus问题可以排序后直接同向移动双指针法求解,也可以进一步转换求差分数组C,因为是排好序求的差分数组,C数组的元素都是正数,但是相邻元素的差不同,C不是有序的。B中两个元素的差,相当于是累加两个元素之间所有元素的增量,即C数组对应子数组的和,这样,问题转化为一个正数数组的子数组和问题。
一般数组子数组和问题,求前缀数组+排序, 转化为 排序数组两元素差问题,正数数组子数组和问题。中间差个排序的nlgn复杂度

本文深入探讨了如何解决子数组和问题,通过构建前缀和数组B,将问题转化为差值等于目标值的问题,并进一步转换为求差分数组C的子数组和问题,最终简化为正数数组子数组和问题。文中详细介绍了每一步的转换过程及算法实现,旨在提供一种快速、高效的解决方法。

被折叠的 条评论
为什么被折叠?



