标签:
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
Given target = 3
, return true
.
https://leetcode.com/problems/search-a-2d-matrix/
虽然是个二维数组,但是有序,当成一维数组二分,计算出row和col的下标。
如果错用两次二分,一次做行一次做列,写起来就很复杂了。
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
标签:
原文地址:http://www.cnblogs.com/Liok3187/p/4676054.html