[LeetCode] 240. Search a 2D Matrix II

对着背影说爱祢 提交于 2019-12-03 12:29:46

搜索一个二维矩阵之二。题意跟[LeetCode] 74. Search a 2D Matrix很接近,唯一的不同是matrix只是做到了每一行上的元素是有序的,每一列也是有序的,但是convert成一维数组后,一维数组并不能做到整体有序。例子

Example:

Consider the following 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]
]

Given target = 5, return true.

Given target = 20, return false.

因为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 };

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!