Write an efficient algorithm, searches for a value in a m x n Matrix. This matrix has the following properties:
- Integers in each row is sorted from the left to the right.
- The first integer of each row was greater than the last integer of the previous row.
For Example,consider the following matrix:
[ [1, 3, 5, 7], [Ten, One,], [23, 30, 34, 50]]
Given Target = 3
, return true
.
This problem is very simple to say, that is, the first number of each row to determine the size of the first row, and then in a row search. In fact, if the efficiency of the words should be in every row also do two points search, I made lazy. It's over anyway.
public class Search2dmatrix {public static void main (String args[]) {Search2dmatrix sm = new Search2dmatrix (); int[][] put = {1, 3, 5, 7}, {Ten, one,}, {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;}}
"Leetcode" Search a 2D Matrix in JAVA