Problem Statement

Given an array A of integers and another non negative integer k, find if there exists 2 indices i and j such that A[i] - A[j] = k, i != j.

Example :

Input :

A : [1 5 3] k : 2

Output :

1

as 3 - 1 = 2

Problem Link

Diffk II - InterviewBit

Code

int Solution::diffPossible(const vector<int> &A, int k) {

    

    unordered_map <int,int> m;
    int n = A.size();

    for(int i=0;i<n;i++)
    {
        if(m.find(k+A[i])!=m.end())
        {
            if(m[k+A[i]]!=i)
            return true;
        }
        if(m.find(A[i]-k)!=m.end())
        {
            if(m[A[i]-k]!=i)
            return true;
        }
        
        m[A[i]] = i;
    }
    return false;

}