计蒜客 两数之和

给定一个数组,找到两个数,使得他们的和为一个给定的数值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 }

如果返回的是两个元素值,则可以先排序,然后首尾两个指针扫描

 
posted @ 2016-08-26 01:09  琴影  阅读(256)  评论(0编辑  收藏  举报