计蒜客 两数之和
给定一个数组,找到两个数,使得他们的和为一个给定的数值target。
函数twoSum返回两个数字index1,index2,
其中:number[index1] + number[index2]==target;
注意:index1必须小于index2且不能为0假设每一组输入只有唯一的一组解。
格式:第一行输入一个数n,接下来的两行分别输入数组number[n]和target,返回index1和index2.
例如:
Input:
numbers={2, 7, 11, 15},
target=9
Output:
index1=1, index2=2
提示:vector twoSum(vector &number, int target)
样例输入
3
5 75 25
100
样例输出
2 3
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 vector<int> twoSum(vector<int> &number, int target){ 5 vector<int> v(2); 6 int num = number.size(); 7 for(int i = 0; i < num - 1; i++){ 8 for(int j = i + 1; j < num; j++){ 9 if(number[i] + number[j] == target){ 10 v[0] = i + 1; 11 v[1] = j + 1; 12 } 13 } 14 } 15 return v; 16 } 17 18 int main(){ 19 int n; 20 cin >> n; 21 vector<int> v(n); 22 for(int i = 0; i < n; i++){ 23 cin >> v[i]; 24 } 25 int target; 26 cin >> target; 27 vector<int> v1 = twoSum(v, target); 28 cout << v1[0] << " " << v1[1] << endl; 29 return 0; 30 }
如果返回的是两个元素值,则可以先排序,然后首尾两个指针扫描
越努力,越幸运