題目描述:
思路:題目要求寫一個高效率的算法,所以暴力遍歷整個矩陣查找的方法行不通了。
分析題目,發現這個矩陣是從左到右,從上到下遞增的。可以發現矩陣右上角的元素是一個特殊的元素():如果和正好相等了,說明找到了。而當比大的時候,可以排除當前一整行,反之可以排除當前一整列,這樣可以大幅減小查找的時間複雜度
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty())
return false;
int rows=matrix.size();
int cols=matrix[0].size();
if(rows<1||cols<1)
return false;
int row=0;
int col=cols-1;
while(row<rows&&col>=0){//合法範圍內查找target
int candidate=matrix[row][col];
if(candidate==target)
return true;
if(candidate<target){
row++;
}else{
col--;
}
}
return false;
}
};