Search a 2D Matrix
2017-01-06 19:37
211 查看
1.题目
写出一个高效的算法来搜索 m × n矩阵中的值。这个矩阵具有以下特性:
每行中的整数从左到右是排序的。
每行的第一个数大于上一行的最后一个整数。
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
给出
target = 3,返回
true
2.算法
我们对行和列进行二分查找,找到为truepublic boolean searchMatrix(int[][] matrix, int target) {
// write your code here
if (matrix == null || matrix.length ==0 || matrix[0].length == 0) {
return false;
}
int l = 0;
int r = matrix.length - 1;
while (l <= r) {
int m = (l + r) / 2;
if (matrix[m][0] == target) {
return true;
} else if (matrix[m][0] > target) {
r = m - 1;
}else {
l = m + 1;
}
}
int row = r; //r不会大于matrix.length - 1,可能小于0
if (row < 0) {
return false;
}
l = 0;
r = matrix[row].length - 1;
while (l <= r) {
int m = (l + r) / 2;
if (matrix[row][m] == target) {
return true;
} else if (matrix[row][m] > target) {
r = m - 1;
}else {
l = m + 1;
}
}
return false;
}
相关文章推荐
- LeetCode OJ 之 Search a 2D Matrix (二维矩阵的搜索)
- LeetCode3 Search a 2D Matrix
- LeetCode刷题(40)--Search a 2D Matrix
- [leetcode] 【查找】 74. Search a 2D Matrix
- LeetCode刷题【Array】Search a 2D Matrix
- leetcode 【Search a 2D Matrix 】python 实现
- [LeetCode]74.Search a 2D Matrix
- 74. Search a 2D Matrix(unsolved)
- [leetcode] Search a 2D matrix
- Search a 2D Matrix
- 74. Search a 2D Matrix
- leetcode-Search a 2D Matrix(2014.2.23)
- [Leetcode] Search a 2D Matrix
- Search a 2D Matrix & Set Matrix Zeroes & Combinations
- Search a 2D Matrix(leetcode)
- LeetCode – Search a 2D Matrix (Java)
- [LeetCode] Search a 2D Matrix 搜索一个二维矩阵
- [LeetCode74]Search a 2D Matrix
- 240. Search a 2D Matrix II && 74. Search a 2D Matrix
- leetcode第一刷_Search a 2D Matrix