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
.
Original title Link: https://oj.leetcode.com/problems/search-a-2d-matrix/
Title: Find out if the target value exists in the M * n Matrix.
The better way is to find the two points. The matrix as a whole is treated as an array.
public boolean Searchmatrix (int[][] matrix, int target) {if (Matrix = = NULL | | matrix.length = = 0 | | matrix[0].length = = 0) return false;int m = matrix.length;int n = matrix[0].length;int start = 0;int end = M * N-1;while (start <= end) {int Mid = (start + end)/2;int x = mid/n;int y = mid% n;if (matrix[x][y] = = target) return true;if (Matrix[x][y] < Targ ET) start = mid + 1;elseend = mid-1;} return false;}
Leetcode--search a 2D Matrix