38. 搜索二维矩阵 II
写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。
这个矩阵具有以下特性:
- 每行中的整数从左到右是排序的。
- 每一列的整数从上到下是排序的。
- 在每一行或每一列中没有重复的整数。
例1:
输入: [[3,4]] target=3 输出:1
例2:
输入: [ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10] ] target = 3 输出:2
挑战
要求O(m+n) 时间复杂度和O(1) 额外空间
class Solution {
public:
int searchMatrix(vector<vector<int>> &matrix, int target) {
// write your code here
if(matrix.empty())
{
return 0;
}
int m=matrix.size(),n=matrix[0].size(),result=0;
int i=m-1,j=0;
while(i>=0&&j<n) //从左下角开始,往右上角逼近
{
if(matrix[i][j]==target)
{
result++;
i--;
}
else if(matrix[i][j]>target)
{
i--;
}
else
{
j++;
}
}
return result;
}
};