几个子数组问题的相互转换
2015-06-03 13:10
106 查看
1 一般问题:求一个数组A中和为target的子数组个数。元素可正可负,元素无序
两个条件:
1)元素是任意数还是都是正数
2)数组A是否有序
求前缀和数组B,问题转化为,数组B求差等于target的两个数的方案个数,即2Minus问题。
2Minus问题可以排序后直接同向移动双指针法求解,也可以进一步转换求差分数组C,因为是排好序求的差分数组,C数组的元素都是正数,但是相邻元素的差不同,C不是有序的。B中两个元素的差,相当于是累加两个元素之间所有元素的增量,即C数组对应子数组的和,这样,问题转化为一个正数数组的子数组和问题。
一般数组子数组和问题,求前缀数组+排序, 转化为 排序数组两元素差问题,正数数组子数组和问题。中间差个排序的nlgn复杂度
两个条件:
1)元素是任意数还是都是正数
2)数组A是否有序
求前缀和数组B,问题转化为,数组B求差等于target的两个数的方案个数,即2Minus问题。
2Minus问题可以排序后直接同向移动双指针法求解,也可以进一步转换求差分数组C,因为是排好序求的差分数组,C数组的元素都是正数,但是相邻元素的差不同,C不是有序的。B中两个元素的差,相当于是累加两个元素之间所有元素的增量,即C数组对应子数组的和,这样,问题转化为一个正数数组的子数组和问题。
一般数组子数组和问题,求前缀数组+排序, 转化为 排序数组两元素差问题,正数数组子数组和问题。中间差个排序的nlgn复杂度
相关文章推荐
- MySQL单列索引和联合索引
- iOS开发UI基础—15iOS开发中三种简单的动画设置
- Effective C++条款40
- c++ ofstream & ifstream文件流操作
- KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]
- c++ ofstream & ifstream文件流操作
- MySQL索引之前缀索引和索引选择性
- js获取时间距离倒计时
- TP分页 (3.1) — 其中,获取当页页需要在类库中加取方法
- php面向对象(OOP)—定义类
- 在 Mac OS X 10.10 安装 pyenv 的一个小坑
- Oracle分组ROLLUP、GROUP BY、GROUPING、GROUPING SETS区别和作用
- 在 Mac OS X 10.10 安装 pyenv 的一个小坑
- 在 Mac OS X 10.10 安装 pyenv 的一个小坑
- 在 Mac OS X 10.10 安装 pyenv 的一个小坑
- To show image on Android
- GC调优在Spark应用中的实践
- python类基本语法笔记
- IOS中的线程操作(3)
- 24种编程语言的Hello World程序