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;
}
};
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 74. Search a 2D Matrix
- leetcode---search-a-2d-matrix---数组
- 【leetcode】Search 2D Matrix
- 【leetcode】【74】Search a 2D Matrix
- LeetCode:Search a 2D Matrix
- Leetcode-search-a-2d-matrix
- Leetcode刷题记—— Search a 2D Matrix(在二维数组里查找)
- [LeetCode]74.Search a 2D Matrix
- 【Leetcode】74 Search a 2D Matrix
- [LeetCode]Search a 2D Matrix ||
- LeetCode74 Search a 2D Matrix
- [leetcode] 74. 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
- leetcode--Search a 2D Matrix
- LeetCode | 74. Search a 2D Matrix
- LeetCode_Search a 2D Matrix
- Leetcode 74: Search a 2D Matrix