面试题04. 二维数组中的查找【LeetCode剑指offer题解】

题目:

面试题04. 二维数组中的查找

面试题04. 二维数组中的查找【LeetCode剑指offer题解】_第1张图片

思路:

  1. 二维数组是有序的数组,从左向右递增,从上到下递增,所以只要比较每一行的最后一个数字,只要最后一个数字比当前数字小,那么直接跳过(剪枝)这一行;若某一行的最后一个数字恰好是要找的target,那么直接返回true;若最后一个数字比当前数字大,接着就看这一行的第一个数字,若第一个数字小于target,就说明要找的数字可能在这一行中,那么就对这一行进行遍历比较。

实现:

class Solution {
   public boolean findNumberIn2DArray(int[][] matrix, int target) {
       if (matrix == null || matrix.length ==0 || matrix[0].length == 0) return false;
        int row = matrix.length;
        int col = matrix[0].length;

        for (int i = 0; i < row; i++) {
            if (target == matrix[i][col - 1] || target == matrix[i][0]) return true;
            if (target < matrix[i][col - 1] && target > matrix[i][0]) {
                for (int j = col - 2; j > 0; j--) {
                    if (target == matrix[i][j])
                        return true;
                }
            }
        }
        return false;
    }
}

你可能感兴趣的:(剑指offer题解,面试题04.,二维数组中的查找,剑指offer,leetcode)