1 题目描述
请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征:
每一行的数字都从左到右排序
每一行的第一个数字都比上一行最后一个数字大
2 解题思路
首先选取右上角数字,如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,去掉此数字所在列;如果该数字小于要查找的数字,则去掉该数字所在行。重复上述过程直到找到要查找的数字,或者查找范围为空。
3 代码实现
class Solution {
public:
/**
*
* @param matrix int整型vector<vector<>>
* @param target int整型
* @return bool布尔型
*/
bool searchMatrix(vector<vector<int> >& matrix, int target) {
int i = 0, j = matrix[0].size() - 1;
while(i < matrix.size() && j >= 0){
if (matrix[i][j] == target){
return true;
}
else if (matrix[i][j] < target){
i++;
}
else{
j--;
}
}
return false;
}
};
4 运行结果
运行时间:3ms
占用内存:348k