Top 150 des entrevuesFacile

Rechercher dans un tableau trié avec rotation

Guide détaillé et implémentation de Python pour le problème « Recherche dans un tableau trié avec rotation ».

Énoncé du problème

Facile

Il existe un tableau d'entiers nums trié par ordre croissant (avec des valeurs distinctes). Avant d'être transmis à votre fonction, nums subit peut-être une rotation à un index pivot inconnu k (1 <= k < nums.length) de telle sorte que le tableau résultant soit [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]].

Étant donné le tableau nums après la rotation possible et un entier target, renvoie l'index de target s'il est dans nums, ou -1 s'il n'est pas dans nums.

Vous devez écrire un algorithme avec une complexité d'exécution O(log n).

Écrivez une fonction search(nums: List[int], target: int) -> int.

Contraintes
  • 1 <= len(nums) <= 5000
  • -10^4 <= nums[i] <= 10^4
  • All values of nums are unique
  • nums is an ascending array that is possibly rotated
  • -10^4 <= target <= 10^4

Exemples

Example 1
Input
nums = [4, 5, 6, 7, 0, 1, 2], target = 0
Output
4
Explanation

0 is found at index 4.

Example 2
Input
nums = [4, 5, 6, 7, 0, 1, 2], target = 3
Output
-1
Explanation

3 is not in the array.

Example 3
Input
nums = [1], target = 0
Output
-1
Explanation

0 is not in the array.

Need a Hint?
Pensez à utiliser des structures de données spécifiques à la recherche binaire, comme des ensembles ou des tas.
Edge Cases to Watch
  • Structures d'entrée vides
  • Entrées à élément unique
  • Grandes limites numériques

Prêt à résoudre ?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Ouvrir dans l'éditeur
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.