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