given an array of integers Find the index of values that satisfy A+B = C + D

来源:互联网 发布:如何找淘宝主播合作 编辑:程序博客网 时间:2024/04/30 07:40

转自:http://www.careercup.com/question?id=5652354158297088

You're given an array of integers(eg [3,4,7,1,2,9,8]) Find the index of values that satisfy A+B = C + D, where A,B,C & D are integers values in the array. 

Eg: Given [3,4,7,1,2,9,8] array 
The following 
3+7 = 1+ 9 satisfies A+B=C+D 
so print (0,2,3,5)


struct Node{    int x;    int y;    Node(int a=0, int b=0):x(a),y(b){};};vector<int> Print4Sum(vector<int> A){    int tsum, l = A.size();    vector<int> ans;    if (l < 4) return ans;    map<int, Node> hashmap;    for (int i = 0; i < l-1; ++i)        for (int j = i+1; j < l; ++j)        {            tsum = A[i] + A[j];            if (hashmap.find(tsum) == hashmap.end()){                Node tnode = Node(i,j);                hashmap[tsum] = tnode;            }else{                Node tnode = hashmap[tsum];                int x = tnode.x, y = tnode.y;                if (x != i && x != j && y != i && y != j)                {                    ans.push_back(i);                    ans.push_back(j);                    ans.push_back(x);                    ans.push_back(y);                    sort(ans.begin(), ans.end());                    return ans;                }            }        }    return ans;}


0 0
原创粉丝点击