分治算法
算法描述
左下角的元素是这一行中最小的元素,同时又是这一列中最大的元素。比较左下角元素和目标:
若左下角元素等于目标,则找到
若左下角元素大于目标,则目标不可能存在于当前矩阵的最后一行,问题规模可以减小为在去掉最后一行的子矩阵中寻找目标
若左下角元素小于目标,则目标不可能存在于当前矩阵的第一列,问题规模可以减小为在去掉第一列的子矩阵中寻找目标
若最后矩阵减小为空,则说明不存在
---------------------
原文:https://blog.youkuaiyun.com/qq_32142535/article/details/78014870
代码:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int len_i,len_j;
len_i=matrix.size();
len_j=len_i>0?matrix[0].size():0;
int index_i=0;
int index_j=len_j-1;
while(index_i<len_i&&index_j>=0)
{
if(target==matrix[index_i][index_j]) return true;
else if(target>matrix[index_i][index_j]) index_i++;
else index_j--;
}
return false;
}
};