您的位置:首页 > 编程语言 > Java开发

【Leetcode】Search a 2D Matrix in JAVA

2014-11-29 16:07 316 查看
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.

For example,Consider the following matrix:
[
[1,   3,  5,  7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]


Given target =
3
, return
true
.

这道题很简单就不多说了,就是通过每一行的首数字大小先判断在哪一行,然后在某一行里搜索。其实如果高效的话应该在每一行里还做二分搜索,我就犯懒了。。反正也过了

public class Search2DMatrix {
public static void main(String args[]){
Search2DMatrix sm = new Search2DMatrix();
int[][] put = {{1,   3,  5,  7},
{10, 11, 16, 20},
{23, 30, 34, 50}};
System.out.println(sm.searchMatrix(put, 12));
}
public boolean searchMatrix(int[][] matrix, int target) {
int i=0;
while(i<matrix.length-1){
if(target>=matrix[i][0]&&target<matrix[i+1][0]){
for(int j=0;j<matrix[i].length;j++)
if(matrix[i][j]==target)	return true;
}
i++;
}
for(int j=0;j<matrix[matrix.length-1].length;j++){
if(matrix[matrix.length-1][j]==target)	return true;
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: