Sort by

recency

|

1393 Discussions

|

  • + 0 comments

    Here is my c++ solution, you can watch the explanation here : https://youtu.be/H8aBskFE2XI

    int minimumDistances(vector<int> a) {
        map<int, int>mp;
        int result = 1000;
        for(int i = 0; i < a.size(); i++){
            if(mp[a[i]]){
                result = min(result, i + 1 - mp[a[i]]);
            }
            mp[a[i]] = i+1;
        }
        return (result == 1000) ? -1:result;
    }
    
  • + 0 comments

    Here is my Python solution!

    def minimumDistances(a):
        distances = []
        if len(a) == len(set(a)):
            return -1
        for num in range(len(a)):
            if a[num] in a[num + 1:]:
                distances.append(abs(num - (a[num + 1:].index(a[num]) + num + 1)))
        return min(distances)
    
  • + 0 comments

    Here is my c++ solution, you can watch the explanation here : https://youtu.be/H8aBskFE2XI

    int minimumDistances(vector<int> a) {
        map<int, int>mp;
        int result = 1000;
        for(int i = 0; i < a.size(); i++){
            if(mp[a[i]]){
                result = min(result, i + 1 - mp[a[i]]);
            }
            mp[a[i]] = i+1;
        }
        return (result == 1000) ? -1:result;
    }
    
  • + 0 comments

    Python Here is the magic

    def minimumDistances(a):
        d = {key:abs(a.index(key) - (len(a)-1-a[::-1].index(key))) for key in set(a) if a.count(key)>1}
        val = min(d.values()) if len(d)>0 else -1
        return val
    
  • + 0 comments

    Way to do it with out nested for loops

    def minimumDistances(a):
        # Write your code here
        values = []
        for i in a:
            start = a.index(i)
            if a.count(i) >= 2:
                #d=a.index(i, start+1)
                values.append(abs(a.index(i, start+1)-start))
                print(i)
        if values:
            return min(values)
        else:
            return -1