剑指Offer 04. 二维数组中的查找

方法一:二叉搜索树

while中的条件包含了边界,且必须包含边界,因为可能当i或j在边界时仍不能满足条件,需要在边界那一行继续搜索。

且包含边界可以遍历所有情况,若没有找到target也不会有遗漏,所以可以直接在循环中写完所有情况,若循环结束后仍没有返回true,则应返回false。

 1 /**
 2  * @param {number[][]} matrix
 3  * @param {number} target
 4  * @return {boolean}
 5  */
 6 var findNumberIn2DArray = function(matrix, target) {
 7     if(matrix.length == 0 || matrix[0].length == 0) return false;
 8     let i = matrix.length - 1, j = 0;
 9     while(i >= 0 && j < matrix[0].length) {
10         if(matrix[i][j] == target) {
11             return true;
12         }else if (matrix[i][j] > target) {
13             i--;
14         }else {
15             j++;
16         }
17     }
18     return false;
19 };

 

posted @ 2021-09-07 19:32  雪之下。  阅读(38)  评论(0)    收藏  举报