L'intersection de deux tableaux triés
Donné deux tableaux triés: A
et B
. La taille de la matrice de A
est La
et la taille de la matrice de B
est Lb
. Comment trouver l'intersection de A
et B
?
Si La
est beaucoup plus grand que Lb
, alors il n'y aura aucune différence pour l'intersection de l'algorithme de recherche?
Nous n'allons pas faire vos devoirs pour vous
C'est une question d'entrevue.
Faire les devoirs maintenant, et dans 5 ans, il va devenir votre collègue et vous allez faire un travail, ou pire debug, c'est le travail.
Le texte de la question regarde comme des devoirs. Ou font-ils des interviews écrites maintenant? Et si ils font des interviews, les entretiens sont devenus des devoirs.
Devoirs questions et les questions d'entrevue sont à peu près les mêmes choses. De toute façon, il y a quelqu'un en autorité qui l'attendent à ce que vous connaissez déjà la réponse, vous êtes jugé sur la réponse que vous donnez, et l'hypothèse est que la réponse est votre propre.
C'est une question d'entrevue.
Faire les devoirs maintenant, et dans 5 ans, il va devenir votre collègue et vous allez faire un travail, ou pire debug, c'est le travail.
Le texte de la question regarde comme des devoirs. Ou font-ils des interviews écrites maintenant? Et si ils font des interviews, les entretiens sont devenus des devoirs.
Devoirs questions et les questions d'entrevue sont à peu près les mêmes choses. De toute façon, il y a quelqu'un en autorité qui l'attendent à ce que vous connaissez déjà la réponse, vous êtes jugé sur la réponse que vous donnez, et l'hypothèse est que la réponse est votre propre.
OriginalL'auteur user288609 | 2010-03-08
Vous devez vous connecter pour publier un commentaire.
Utilisation
set_intersection
comme ici. L'habituelle mise en œuvre des travaux semblables à la fusion de la partie de fusion-algorithme de tri.Vous êtes de droite. Une question connexe: stackoverflow.com/questions/896155/...
OriginalL'auteur amit_grepclub
Car cela ressemble à un HW...je vais vous donner l'algorithme:
OriginalL'auteur codaddict
J'ai été aux prises avec le même problème pour un certain temps maintenant, jusqu'à présent, je suis venu avec:
Linéaire correspondant qui permettra de O(m+n) dans le pire cas. En gros, vous gardez les deux pointeurs (A et B), chacune pointant vers le début de chaque tableau. Alors, avance le pointeur qui pointe à la valeur la plus petite, jusqu'à ce que vous atteignez la fin de l'un des tableaux, qui indiquent pas d'intersection. À tout moment, si vous avez * = = *B - voici votre intersection.
Binaire correspondant. Ce qui donne ~ O(n*log(m)) dans le pire cas. En gros, vous choisissez plus petit tableau et effectuer une recherche binaire dans l'ensemble de tous les éléments de la plus petite matrice. Si vous souhaitez plus de fantaisie, vous pouvez même utiliser la dernière position où binaire echec de la recherche et de l'utiliser comme point de départ pour la prochaine binaire de recherche. De cette façon, vous améliorer de façon marginale pire des cas, mais pour certains jeux, il peut accomplir des miracles 🙂
Double binaire correspondant. C'est une variation régulière binaire correspondant. Fondamentalement, vous obtenez l'élément à partir du milieu de la plus petite matrice et faire de la recherche binaire dans l'ensemble. Si vous ne trouvez rien, alors vous couper petit tableau en deux (et oui, vous pouvez jeter élément que vous avez déjà utilisé) et coupez les plus grosses tableau en deux (utiliser les binaires de recherche de point de défaillance). Et puis répétez l'opération pour chaque paire. Les résultats sont mieux que O(n*log(m)) mais je suis trop paresseux pour calculer ce qu'ils sont.
Ceux sont les deux les plus de base. Les deux ont des mérites. Linéaire est un peu plus facile à mettre en œuvre. Binaire est sans doute plus rapide (bien qu'il existe beaucoup de cas, quand linéaire correspondant sera mieux binaire).
Si quelqu'un sait quelque chose de mieux que ce que j'aimerais entendre. Correspondance des tableaux est ce que je fais ces jours-ci.
P. S. ne pas me citer sur les termes "linéaire correspondant" et "binaire correspondant" comme je les ai faites moi-même et il y a probablement nom de fantaisie pour elle déjà.
Au galop de recherche est la bonne façon d'aller ici, pas une des choses que vous avez mentionnées. Si vous avez une incompatibilité, avance le pointeur pointant vers la plus petite chose par 1, puis 2, puis 4, et ainsi de suite jusqu'à une incohérence est détectée. Le binaire de recherche sur la gamme que vous trouvez que les crochets de la solution.
OriginalL'auteur Nazar
OriginalL'auteur Rajendra Uppal
Considérons deux tableaux triés: -
Tandis que la boucle sera exécutée jusqu'à deux pointeurs atteindre les longueurs respectives.
Sortie sera: -
OriginalL'auteur Kushal Shinde
OriginalL'auteur Kartik