Aujourd'hui, l'éditeur a vu une petite question sur Internet, qui concerne la recherche dans un tableau bidimensionnel, je vous emmène l'apprendre ensemble. Si vous êtes intéressé, regardez bien. vous pouvez le copier !
Question :
Dans un tableau à deux dimensions, chaque ligne est triée par ordre croissant de gauche à droite. est trié par ordre croissant de haut en bas. Veuillez compléter une fonction, saisir un tel tableau bidimensionnel et un entier, et déterminer si le tableau contient l'entier.
1. Idée
Sélectionnez d'abord le numéro dans le coin supérieur droit du tableau. Si le nombre est égal au nombre que vous recherchez, le processus de recherche se termine ; si le nombre est supérieur au tableau que vous recherchez, supprimez la colonne où se trouve le nombre si le nombre est inférieur au nombre que vous recherchez ; recherchez, supprimez la ligne où se trouve le numéro. C'est-à-dire que si le nombre à trouver ne se trouve pas dans le coin supérieur droit du tableau, une ligne ou une colonne sera éliminée à chaque fois de la plage de recherche du tableau, afin que la plage de recherche puisse être réduite à chaque étape. jusqu'à ce que le numéro à trouver soit trouvé ou que la plage de recherche soit nulle.
2. Exemple
Si le nombre 7 est trouvé dans un tableau à deux dimensions, renvoie vrai, s'il n'est pas trouvé, renvoie faux.
1 2 8 9
2 4 9 12
4 7 1 0 13
6 8 11 15
Le processus de recherche est le suivant :
3. Implémentation de la programmation
class Solution { public: bool Find(int target, vector<vector<int> > array) { int rows = array.size(); int cols = array[0].size(); if(!array.empty() && rows > 0 && cols > 0){ int row = 0; int col = cols - 1; while(row < rows && col >= 0){ if(array[row][col] == target){ return true; } else if(array[row][col] > target){ --col; } else{ ++row; } } } return false; } };
[Cours recommandé : Tutoriel vidéo C++]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!