Cela a été demandé lors d'une interview Microsoft sur site.Méthode efficace pour compter les occurrences d'une clé dans un tableau trié
Compter le nombre d'occurrences d'une clé donnée dans un tableau.
J'ai répondu à la recherche linéaire parce que les éléments peuvent être dispersés dans le tableau . Dites que la clé se trouve au début et à la fin. Nous avons donc besoin de scanner le tableau entier.
Ensuite, il a demandé si le tableau est trié? Pensé pendant un certain temps et dit que je vais utiliser la recherche linéaire à nouveau. Parce que les répétitions de la clé si présent peuvent être n'importe où dans le tableau. En tant qu'optimisation , j'ai aussi dit que si les premier et dernier éléments du tableau sont identiques, peut prendre la longueur du tableau comme réponse.
Mon analyse est-elle correcte dans les deux cas?
Exemple:
Input = [0 0 1 1 1 2 2 3 3], key = 1, Answer = 3
Input = [0 0 2 2 3 3], key = 1, Answer = 0
si tous les numéros dans la liste sont X? Alors cela va dégénérer en O (N). La solution consiste à utiliser une recherche binaire légèrement modifiée qui déplace toujours la limite droite lorsque vous utilisez la valeur que vous recherchez. Cela vous trouvera la première occurrence en temps logarithmique. Faites ensuite la même chose, mais déplacez la limite gauche vers la droite pour la dernière occurrence. – marcog
marcog - Votre approche est-elle la même que celle de codaddict? – Edward
@Edward oui, c'est – marcog