求一个有序整数数组中和为K的数的对数
来源:互联网 发布:2016淘宝小卖家好做吗 编辑:程序博客网 时间:2024/06/06 09:48
题目:
求一个有序整数数组中和为K的数的对数。
解决方案:
两个指针,一个在头,一个在尾;
大则-,小则加。
延伸题目:
(1)求整数数组中和为K的对数。
先排序,O(N*logN),在按照以上算法查找O(N)。
(2)求一个整数数组差为K的数的对数。
先排序,O(N*logN),然后,用两个指针均从头部开始,一个先走一个后走,差过小则前指针++,差过大则后指针++。
这里需要考虑一个问题,如果数组中有重复元素的话,需要做处理。
处理方法可以如下:
while(*pBack = *(pBack+1))
{
...
pBack++;
}
while(*pFront = *(pFront+1))
{
...
pFront++;
}
这样,先找出低位重复的,再找出高位重复的即可。
原题目中,如果存在重复,应该怎么解决呢?
while(p1<=p2)
{
if(*p1+*p2 < K) p1++;
else if(*p1+*p2 > K) p2--;
else
{
...//保存数对
while(*p1 = *(p1+1))
{
p1++;
...//保存数对
}
while(*p2 = *(p2-1))
{
p2--;
....//保存数对
}
}
}
- 求一个有序整数数组中和为K的数的对数
- 1352 找出数组中和为k的两个数
- 求数组中和为固定数的所有对
- 求数组中和为给定数所有的组合
- 复杂度为log(m+n)下求有序数组A和B有序合并之后第k小的数
- 二分求两个有序数组第k大的数
- 求数组中和为某个值的一个组合
- 数组中和等于K的数对
- 数组中和等于k的数对
- 数组中和等于K的数对
- 找出有序数组中和等于指定数的两个数
- 532. K-diff Pairs in an Array 数组中差值为k的数对数量
- 求从一个整数数组中两个数之和为m的两个数
- 求整数数组中和最大的子数组
- 求整数数组中和最大的子数组
- 求已排序数组中和为某个数的两个数
- 求数组中和为给定数的所有组合的个数
- 阿里巴巴笔试题--求数组中和为给定数所有的组合
- javase_11(集合的理解)
- Java虚拟机学习随笔(二)
- 排序算法3-堆排序与优先队列
- JavaEE 快速开发平台 G4Studio 作者熊春专访
- Android source tree structure
- 求一个有序整数数组中和为K的数的对数
- 托管代码
- Sharepoint Custom Timer Job
- Web设计师应遵循的高效设计原则之二:重复[转载]
- openstack中国行(北京站)开始报名啦!楼主说了“非硬货,不分享”
- javase_12(集合+时间对象)
- java jdk动态代理
- C++使用SQLite步骤及示例
- GoldenGate实施故障汇总