Search Rotated Array Un tableau trié qui a été tourné vers la droite d'un nombre arbitraire et le nombre spécifié (clé) sont transmis et recherchés.
Recherche le nombre spécifié (clé) dans un tableau trié qui a subi une rotation de n'importe quel nombre. Renvoie -1 si la clé n'existe pas. Supposons que le tableau ne contienne aucun doublon. Vous trouverez ci-dessous le tableau d'origine avant la rotation. Si vous exécutez la rotation 6 fois sur ce tableau, elle changera comme suit.
Solution Runtime Complexity O(logn) J'utilise la recherche binaire. Memory Complexity O(logn). Pour chaque boucle, le tableau passé est coupé en deux et un seul est recherché.
La solution est essentiellement la recherche binaire, mais avec quelques corrections. Si vous regardez attentivement l'exemple de tableau, vous pouvez voir qu'au moins la moitié du tableau est toujours triée. Profitez de cette fonctionnalité. Si le nombre n que vous recherchez se trouve dans la moitié triée du tableau, vous pouvez le trouver avec la recherche binaire. Sinon, jetez les moitiés triées et continuez à examiner les moitiés non triées. Cela entraîne une complexité d'exécution de O (logn) car chaque étape divise le tableau en deux. Certaines parties conditionnelles du code sont un peu difficiles à lire. Sous quatre conditions
Recommended Posts