有序数组求和问题
一、学习要点:
1.c++中参数引用的应用,有一种c语言中传值的感觉;声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。
2.vector res(2,0)表示vector是一个二维向量,每个元素被初始化为0;用vector的时候注意包含库include;
二、代码实现:
#include<stdlib.h>
#include<stdio.h>
#include<vector>
class Solution{
public:
vector<int> twoSum(vector<int> &numbers,int target)
{
vector<int> res(2,2);
int i=0;
int j=numbers.size()-1;
while(i<numbers.size()-1&&j>0)
{
int ans=numbers[i]+numbers[j];
if(ans>target){
j--;
}else if(ans<target){
i++;
}
else{
res[0]=i+1;
res[1]=j+1;
return res;
}
}
return res;
}
}
int main(){
vector<int> a={2,5,7,9};
int target=9;
vector<int> res(2,2);
Solution ob;
res=ob.twoSum(a,target);
for(int i=0;i<2;i++)
{
printf("%d",res[i]);
}
system("pause");
return 0;
}
三、运行结果: