Trouvez toutes les paires de n qui se résument à S
Donné un tableau, trouver toutes les paires de la nsa, qui aboutissent à une valeur donnée.
Il y a le classique algorithme O(n) de garder les 2 pointeurs à l'avant et à l'arrière et les rapprocher pour trouver la paire. Cela ne mène qu'à 1 paire. Si vous voulez toutes les paires.
Bonus: Trouver le minimum de la distance de la paire.
Pouvez-vous faire cela en O(n).
source d'informationauteur shreyasva
Vous devez vous connecter pour publier un commentaire.
Un seul et même (temps) solution efficace implique un hachage de la carte à partir des entiers les nombres entiers. Cet algorithme fonctionne en parcourant le tableau. Sur chaque élément x, de rechercher somme - x dans la table de hachage et, si elle existe, print (x, somme - x). Ajouter x à la table de hachage, et aller à l'élément suivant.
Mais pour O(1) de la constante de l'espace et de O(n) en temps linéaire sur tableau trié,code ci-dessous sûrement œuvres.
Source Lien
Vecteur de bits:
Je l'aime. Avoir un vecteur de bits (j'.e.tableau de bits) de taille égale à la somme totale.
Ce sera ont besoin constant de stockage O(n) et le temps de la complexité est O(n) dans tous les cas.
Peu de modification à coder_15 réponse, pour vérifier si l'élément suivant de premier est le même que le premier ou l'élément précédent, pour la dernière est la même que la dernière: