找到两个数的差为一个特定数
2017-02-23 00:36
225 查看
Given an integer 'k' and an sorted array A (can consist of both +ve/-ve nos), output 2 integers from A such that a-b=k.
PS:
nlogn solution would be to check for the occurence of k-a[i] (using binary search) when you encounter a[i]. methods like hash consume space.
Is an O(n) solution with O(1) extraspace possible?
void fun(vector<int> &a, int key)
{
int n = a.size();
if (n < 2)
{
return;
}
key = abs(key);
int p = 0;
int q = 1;
while (q < n)
{
if (a[q] - a[p] == key)
{
cout << p << " " << q << endl;
return;
}
else if (a[q] - a[p] > key)
{
p++;
}
else
{
q++;
}
}
}
PS:
nlogn solution would be to check for the occurence of k-a[i] (using binary search) when you encounter a[i]. methods like hash consume space.
Is an O(n) solution with O(1) extraspace possible?
void fun(vector<int> &a, int key)
{
int n = a.size();
if (n < 2)
{
return;
}
key = abs(key);
int p = 0;
int q = 1;
while (q < n)
{
if (a[q] - a[p] == key)
{
cout << p << " " << q << endl;
return;
}
else if (a[q] - a[p] > key)
{
p++;
}
else
{
q++;
}
}
}
相关文章推荐
- CareerCup Google Interview 找到两个数的差为一个特定数
- 找到两个数的差为一个特定数
- 如何找到一个数组中的两个数,他们的和为0
- 根据XPath找到某一个特定的节点
- 在一个较长一维数组中找到特定值索引的捷径(matlab)
- 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target(容易)
- 在一个数组中找到最大的两个数
- 跑ssis分组差错:没有关联“”。假设无法找到一个特定的连接元件,Connections 这种错误发生的收集
- 找到一个乱序数组排序后某一特定数值首次和末次出现的位置
- 找到一个数组中相加为特定数值的两个元素
- 找到一个学习建站\网页制作的好网站!
- LeetCode试题之““给定一个正整数A,找到最小的正整数B,它的每一个数字的乘法等于A。””
- 12个钉子一个天平,现知道只有一个和其它的重量不同,问能否称三次就能找到那个钉子。
- "未能找到任何适合于指定的区域性或非特定区域性的资源"解决
- 偶然找到一个两年前发表的小游戏,炒炒剩饭^_^
- fatal error LNK1169: 找到一个或多个多重定义的符号 的解决方案
- dfs,bfs 找到了一个比较容易理解他们的ppt
- 找到一个WinPcap介绍的网页
- 使用Limit参数优化MySQL查询 在找到一个记录后将停止查询
- R0-R37它是Arm 寄存器,那是,CPU内部。和GPIO注册所有外设。换句话说,要是arm的cpu,它包含了其他芯片公司将有R0-R37,和GPIO寄存器只有一个特定的芯片。