您的位置:首页 > 其它

leetcode search a 2d matrix

2014-11-12 16:59 260 查看
this algorithm just use two times of binary search, first in the col direction, to choose a fit row.

then use binary search in the definitely row, then we can get the answer.

class Solution {
public:
bool searchMatrix(vector<vector<int> > &matrix, int target) {
if(matrix.empty())
return false;
int m = matrix.size();
int n = matrix[0].size();
int rowstart = 0;
int colstart = 0;
int rowend = m-1;
int colend = n-1;
int midrow = 0;
int midcol = 0;
while(rowstart <= rowend)
{
midrow = (rowend+rowstart)/2;
if(target < matrix[midrow][0])
rowend = midrow-1;
if(target > matrix[midrow][colend])
rowstart = midrow+1;
if(target > matrix[midrow][0] && target < matrix[midrow][colend])
break;
if(target == matrix[midrow][0] || target == matrix[midrow][colend])
return true;
}
while(colstart <= colend)
{
int midcol = (colstart+colend)/2;
if(target > matrix[midrow][midcol])
colstart = midcol+1;
if(target < matrix[midrow][midcol])
colend = midcol-1;
if(target == matrix[midrow][midcol])
return true;
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: