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 {};
}
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
Post a Comment