思路:
借鉴二分查找法的思想,即找到一个中间值,通过比较它的大小,可以批量的缩小搜索空间。因此根据本题题意可以从矩阵的右上角或者矩阵的左下角处开始查找key。
以右上角举例,若val大于key,则向左搜索(搜索空间一次减少一列),若val小于key,则向下搜索(搜索空间一次减少一行)
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int m=array.size();
if(m==0)
return false;
int n=array[0].size();
if(n==0)
return false;
int row=0,col=n-1;
while(row<m && col>=0){
int key=array[row][col];
if(key==target)
return true;
if(key>target)
col--;
if(key<target)
row++;
}
return false;
}
};
网友评论