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;
}
};
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;
}
};
相关文章推荐
- leetcode - Search a 2D Matrix
- LeetCode 74 Search a 2D Matrix(Python详解及实现)
- [leetcode]Search a 2D Matrix
- 【LeetCode】Search a 2D Matrix
- [LeetCode74]Search a 2D Matrix
- leetcode-74 Search a 2D Matrix
- Leetcode之Search a 2D Matrix 问题
- LeetCode | Search a 2D Matrix
- Search a 2D Matrix leetcode java
- LEETCODE: Search a 2D Matrix
- [LeetCode] Search a 2D Matrix
- Search a 2D Matrix - Leetcode
- LeetCode(074) Search a 2D Matrix (Java)
- Leetcode-Search a 2D Matrix
- [LeetCode]Search a 2D Matrix
- [LeetCode]Search a 2D Matrix
- Leetcode-74. Search a 2D Matrix
- 《leetCode》:Search a 2D Matrix
- LeetCode--Search a 2D Matrix
- LeetCode-Search a 2D Matrix