本系列文章已全部上傳至我的github,地址:ZeeCoder‘s Github
歡迎大家關(guān)注我的新浪微博,我的新浪微博
歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.
For example,
Consider the following matrix:
[
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]Given target = 3, return true.
劍指offer上的老題了,矩陣是排好序的,那末我們可以從其中找到規(guī)律。
從右上角(0,n)開始掃描,如果target比它大就往下找,如果小就往左側(cè)找。
具體看代碼:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0) return false;
int i = matrix.size()-1;
int j = 0;
while(i>=0 && j< matrix[0].size())
{
if(target==matrix[i][j]) return true;//找到
if(target>matrix[i][j]) j++;//如果target大,就往下找
else i--;//反之則往左找
}
return false;
}
};