Idée: Pour
cette question, nous pouvons partir de la condition du tableau de contraintes dans la question. Chaque ligne est triée par ordre croissant de gauche à droite, et chaque colonne est triée par ordre croissant de haut en bas, afin que nous puissions commencer à partir du coin supérieur gauche Démarrez la traversée, si l'élément courant est supérieur à la cible, supprimez cette colonne; si elle est inférieure à, supprimez cette ligne.
Code:
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0) return false;
int i = 0, j = matrix[0].size()-1;
while(i <= matrix.size()-1 && j >=0 )
{
if(matrix[i][j] > target) --j;
else if(matrix[i][j] < target) ++i;
else return true;
}
return false;
}
};