アイデア:
この質問では、質問の制約配列の条件から開始できます。各行は左から右に昇順で並べ替えられ、各列は上から下に昇順で並べ替えられるため、開始できます。左上隅からトラバーサルを開始します。現在の要素がターゲットよりも大きい場合は、この列を削除します。より小さい場合は、この行を削除します。
コード:
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;
}
};