Equal

 https://www.interviewbit.com/problems/equal/

vector<int> Solution::equal(vector<int> &A) {
    vector<int> result;
    vector<int> ans;
    
    int n = A.size();
    
    unordered_map<int, vector<int> > val;
    for(int i=0;i<n-1;i++) {
        for(int j=i+1;j<n;j++) {
            int sum = A[i] + A[j];
            
            if(val.find(sum)!=val.end()) {
                if(val[sum][0]<i && val[sum][1]!=i && val[sum][1]!=j) {
                    result.push_back(val[sum][0]);
                    result.push_back(val[sum][1]);
                    result.push_back(i);
                    result.push_back(j);
                    
                    if(ans.size()==0)
                        ans = result;
                    else if(ans > result) {
                        ans.clear();
                        ans = result;
                    }
                }
            }
            else {
                result.push_back(i);
                result.push_back(j);
                val[sum] = result;
            }
            result.clear();
        }
    }
    
    return ans;
}
 
vector<int> Solution::equal(vector<int> &A) {
int n = A.size();
for (int i=0; i<n-3; i++) // A
for (int j=i+1; j<n-1; j++) // B
{
unordered_map<int, int> m;
vector<int> v;
for (int k=i+1; k<n; k++) // D
{
if (k == j)
continue;

int srch = A[i]+A[j]-A[k];
if (m.find(srch) != m.end())
{
if (v.empty() || m[srch]<v[0])
v = {m[srch], k};
}

// add to map
if (m.find(A[k]) == m.end())
m[A[k]] = k;
}

if (!v.empty())
return {i, j, v[0], v[1]};
}

return {};
}

 

vector<int> Solution::equal(vector<int> &A) {
    // Do not write main() function.
    // Do not read input, instead use the arguments to the function.
    // Do not print the output, instead return values as specified
    // Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
    vector<int> out;
    int size = A.size();
    int i,j,k,l;
//    int flag = 0;
    for(i=0;i<size;i++)
    {
        for(j=0;j<size;j++)
        {
            for(k=0;k<size;k++)
            {
                for(l=0;l<size;l++)
                {
                    if(i<j && k<l && i<k && j!=k && j!= l && (A[i] + A[j]) == (A[k] + A[l]))
                    {
                        out.push_back(i);
                        out.push_back(j);
                        out.push_back(k);
                        out.push_back(l);
                        return out;
                        /*flag = 1;
                        break;*/
                    }
                }
                /*if(flag == 1)
                {
                    break;
                }*/
            }
            /*if(flag == 1)
            {
                break;
            }*/
        }
        /*if(flag == 1)
        {
            break;
        }*/
    }
    return out;
}

Comments

Popular posts from this blog

Perfect Peak of Array

Is Rectangle?

Sort array with squares!