您的位置:首页 > 其它

[Leetcode]Search a 2D Matrix

2013-06-24 15:42 246 查看
思路:用经典的二分查找,先找到所在行,然后再找到所在列
class Solution {
public:
bool searchMatrix(vector<vector<int> > &matrix, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(matrix.empty()) return false;
int row = -1;
{
int l = 0, r = matrix.size() - 1;
while(l <= r)
{
int mid = l + (r - l) / 2;
if(target < matrix[mid].front())
r = mid - 1;
else if(target > matrix[mid].back())
l = mid + 1;
else
{
row = mid;
break;
}
}
}
if(row == -1) return false;
int l = 0, r = matrix[0].size() - 1;
vector<int> &arr = matrix[row];
while(l <= r)
{
int mid = l + (r - l) / 2;
if(target > arr[mid])
l = mid + 1;
else if(target < arr[mid])
r = mid - 1;
else
return true;
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: