您的位置:首页 > Web前端

剑指offer 和为S的两个数字

2016-03-16 20:56 369 查看
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 [align=left]该算法没有利用数组是有序的这个信息,虽然算法时间也是O(n),但是空间消耗也是O(n)[/align][align=left]
[/align]
时间消耗O(n),空间消耗O(1)
12345678910111213141516171819202122
class
Solution {
public
:
vector<
int
> FindNumbersWithSum(vector<
int
> array,
int
sum) {
int
i =
0
;
int
j = array.size()-
1
;
vector<
int
> result;
while
(i < j)
{
if
(array[i] + array[j] == sum)
{
result.push_back(array[i]);
result.push_back(array[j]);
return
result;
}
else
if
(array[i] + array[j] > sum)
j--;
else
i++;
}
return
result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: