Search a 2D Matrix
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],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
Given target =3, returntrue.
https://leetcode.com/problems/search-a-2d-matrix/
Although it is a two-dimensional array, ordered, as a one-dimensional array of two points, calculate the row and Col subscript.
If you use the wrong two times, do a row at a time to do the column, it is very complicated to write.
1 /**
2 * @param {number[][]} matrix
3 * @param {number} target
4 * @return {boolean}
5 */
6 var searchMatrix = function(matrix, target) {
7 var m = matrix.length, n = matrix[0].length;
8 var i = 0, j = m * n - 1, middle, row, col, curr;
9 while(i <= j){
10 middle = parseInt((i + j) / 2);
11 row = parseInt(middle / n);
12 col = middle % n;
13 curr = matrix[row][col];
14 if(target === curr){
15 return true;
16 }
17
18 if(target > curr){
19 i = middle + 1;
20 }else{
21 j = middle - 1;
22 }
23 }
24 return false;
25 };
[Leetcode] [JavaScript] Search a 2D Matrix