搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
示例:
现有矩阵 matrix 如下:
[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ]给定 target =
5
,返回true
。给定 target =
20
,返回false
。
根据矩阵的特性,从右上角或者左下角开始搜索。
/** * @param {number[][]} matrix * @param {number} target * @return {boolean} */ var searchMatrix = function(matrix, target) { let result = false; for(let i=0;i<matrix.length;i++){ for(let j=matrix[0].length-1;j>=0;j--){ if(target>matrix[i][j]){ break; }else if(target<matrix[i][j]){ continue; }else{ result = true; } } } return result; };
更有效率的方法?
if(matrix.length==0) return false; let row = 0; let col = matrix[0].length - 1; while (row < matrix.length && col >= 0) { let n = matrix[row][col] if (n==target){ return true; }else if(n >target){ col--; }else{ row++; } } return false;