搜索一个二维矩阵之二。题意跟[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 };
01-11 04:53