La meilleure façon de trouver le nombre de paires dans un tableau dont la différence est k

J'ai pu résoudre le problème sur hackerrank. J'ai eu deux approches dans mon esprit :

d'entrée : tableau non trié(a) et k

Première Approche :

1) Trier le tableau

2) pour chaque élément du tableau a[i] ,trouver l'élément a[i]+K à l'aide de la recherche binaire.Si trouvé increament le comte et la rupture de la boucle interne.

Deuxième Approche :

1) Trier le tableau

2) pour chaque élément du tableau a[i] ,trouver l'élément a[i]+K à l'aide de linearsearch.Si trouvé increament le comte et la rupture de la boucle interne.

J'ai trouvé la Première approche pour être mieux comme ça permettra de résoudre le problème à n(logn). Mais lorsque plusieurs cas de test sont sur les solutions de l'approche 2 prend moins de temps . Peut quelqu'un me dire pourquoi ?

Ci-dessous sont le code pour les deux approches :

Première Approche De Code :

static int pairs(int[] a,int k) {
  /* Complete this function */
    int temp;
    int len=a.length;
    int count=0;
    int beg;
    int mid;
    int end;
    int midVal;
    Arrays.sort(a);
    for(int i=0;i<len-1;i++){
    temp=a[i]+k;
    beg=i+1;  
    end=len-1;
        for(int l=beg;l<len;l++){
            mid=(beg+end)/2;
            midVal=a[mid];
            if(midVal==temp){
                count++;
                break;
            }
            else if(midVal>temp){
                end=mid-1;
            }
            else{
                beg=mid+1;
            }
        }

    }
    return count;
}

Deuxième Code D'Approche :

static int pairs(int[] a,int k) {
  /* Complete this function */
    int temp;
    int len=a.length;
    int count=0;
    Arrays.sort(a);
    for(int i=0;i<len;i++){
    temp=a[i];
        for(int j=i+1;j<len;j++){
            if(temp-a[j]==-k){
                count++;
                break;
            }
        }
    }
    return count;
}
Dupliquer: Voici la meilleure approche stackoverflow.com/questions/4720271/...

OriginalL'auteur Sahil Gupta | 2013-11-24