您的位置:首页 > 其它

Leetcode:Search a 2D Matrix 菜鸟解法

2015-02-20 17:13 357 查看
从右上角往左下角进行查找可以解决这个问题,不过我不想那么做,所以做了两次二分法,先行二分再列二分

class Solution {
public:
bool searchMatrix(vector<vector<int> > &matrix, int target) {
int m = matrix.size();
int left=0,right = 0,mid = 0,row=0;
if(m==0) return false;
int n = matrix[0].size();
if(n==0) return false;

right = m-1;mid = (left+right)/2;
if(target<matrix[0][0]||target>matrix[m-1][n-1]) return false;
while((left!=right-1)&&right!=0){
if(matrix[mid][0]<target){
left = mid;
mid = (left+right)/2;
}
else if(matrix[mid][0]>target){
right = mid;
mid = (left+right)/2;
}
else return true;
}
if(matrix[right][0]==target||matrix[left][0]==target) return true;
if(target>matrix[right][0]) left =right;
row = left;left = 0;right = n-1;mid = (left+right)/2;

while(left!=right-1&&right!=0){
if(matrix[row][mid]<target){
left = mid;
mid = (left+right)/2;
}
else if(matrix[row][mid]>target){
right = mid;
mid = (left+right)/2;
}
else return true;
}
if(matrix[row][right]==target||matrix[row][left]==target) return true;
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 二分