搜索一个二维矩阵之二。题意跟[LeetCode] 74. Search a 2D Matrix很接近,唯一的不同是matrix只是做到了每一行上的元素是有序的,每一列也是有序的,但是convert成一维数组后,一维数组并不能做到整体有序。例子
因为input的规律是每一行是有序的,每一列也是有序的,所以可以从数组的右上角(比如例子中的15好了)开始扫描,如果小于15,就往左;如果大于15,就一定在下一行。
时间O(m + n)
空间O(1)
1 /** 2 * @param {number[][]} matrix 3 * @param {number} target 4 * @return {boolean} 5 */ 6 var searchMatrix = function(matrix, target) { 7 // corner case 8 if (matrix === null || matrix.length === 0) return false; 9 10 // normal case 11 let row = 0; 12 let col = matrix[0].length - 1; 13 while (col >= 0 && row <= matrix.length - 1) { 14 if (target === matrix[row][col]) { 15 return true; 16 } else if (target < matrix[row][col]) { 17 col--; 18 } else { 19 row++; 20 } 21 } 22 return false; 23 };