1、题目

2、思路
首先定义两个指针,第一个指针p指向数组的第一个数字,第二个指针q指向数组的最后一个数字。如果p+q=s,则找到要找的数字;如果p+q
#include <iostream>
#include <vector>
using namespace std;
/* 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是s。如果有多对数字的和等于s,输入任意一对即可*/
class Solution{
public:
vector<int> FindNumbersWithSum(vector<int> array,int sum)
{
// 存储结果
vector<int> res;
// 特殊输入
if(array.size() <= 1)
return res;
// 辅助变量
int p = 0;
int q = array.size()-1;
int Sum = 0;
// 查找结果
while(p<q)
{
Sum = array[p] + array[q];
if(Sum == sum)
{
res.push_back(array[p]);
res.push_back(array[q]);
cout<<array[p]<<endl;
cout<<array[q]<<endl;
break;
}
if(Sum < sum)
++p;
else
--q;
}
return res;
}
};
int main()
{
vector<int> data={1,2,4,7,11,13,14};
int s =15;
Solution solution;
solution.FindNumbersWithSum(data,s);
return 0;
}

博客介绍了在数组中找和为s的数字的思路,通过定义两个指针,一个指向数组首数字,一个指向数组尾数字,根据两指针所指数字之和与s的关系来判断是否找到目标数字。
1万+

被折叠的 条评论
为什么被折叠?



