法一: 右上角开始判断,小于target下移,大于target左移(37ms)
int searchMatrix(vector<vector<int> > &matrix, int target)
{
// write your code here
if(matrix.empty())
return 0;
int rows= matrix.size();
int col = matrix[0].size();
int i=0,j=col-1,count=0;
while(i<rows&&j>=0)
{
if(target==matrix[i][j])
{
count++;
if(i+1<rows)
i++;
else if(j-1>=0)
j--;
else
return count;
}
else if(target>matrix[i][j])
i++;
else
j--;
}
return count;
}
法二:借用map,记录数字出现次数,返回target的次数(50ms)
int searchMatrix(vector<vector<int> > &matrix, int target)
{
// write your code here
unordered_map<int,int> res;
for(int i=0;i<matrix.size();i++)
{
for(int j=0;j<matrix[i].size();j++)
{
res[matrix[i][j]]++;
}
}
return res[target];
}