Maison  >  Article  >  développement back-end  >  C++ implémente la recherche dans un tableau à deux dimensions

C++ implémente la recherche dans un tableau à deux dimensions

little bottle
little bottleoriginal
2019-04-09 11:14:573376parcourir

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 !

C++ implémente la recherche dans un tableau à deux dimensions

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 :

C++ implémente la recherche dans un tableau à deux dimensions

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn