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

    科技2022-07-11  88

    题目:04. 二维数组中的查找

    分析: 根据二维数组的特点,我们发现如果将最后一行或者最后一列的元素与target作比较,可以筛选至少一行或一列的元素,非常高效。

    思路: 从右上角开始遍历最后一列,也可从左下角遍历最后一行;

    将元素与target相比较: 若相同:则证明包含,返回true;若小于:则证明此行元素均小于target,继续下一行,即i++;若大于:则说明此行元素有可能包含,开始遍历此行,即j--;(由于剩下的几行元素均大于target,自然不用继续再遍历判断了)

    代码:

    class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { //特判 if(matrix == null || matrix.length == 0){ return false; } int rows = matrix.length; int cols = matrix[0].length; int i = 0, j = cols - 1; while(i < rows && j >= 0){ int e = matrix[i][j]; if(e == target){ return true; }else if(e < target){ i ++}else{ j --; } } return false; } }

    Processed: 0.051, SQL: 8