您的位置:首页 > 其它

几个子数组问题的相互转换

2015-06-03 13:10 106 查看
1 一般问题:求一个数组A中和为target的子数组个数。元素可正可负,元素无序

两个条件:

1)元素是任意数还是都是正数

2)数组A是否有序

求前缀和数组B,问题转化为,数组B求差等于target的两个数的方案个数,即2Minus问题。

2Minus问题可以排序后直接同向移动双指针法求解,也可以进一步转换求差分数组C,因为是排好序求的差分数组,C数组的元素都是正数,但是相邻元素的差不同,C不是有序的。B中两个元素的差,相当于是累加两个元素之间所有元素的增量,即C数组对应子数组的和,这样,问题转化为一个正数数组的子数组和问题。

一般数组子数组和问题,求前缀数组+排序, 转化为 排序数组两元素差问题,正数数组子数组和问题。中间差个排序的nlgn复杂度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: