LeetCode:二维数组中的查找

349 阅读1分钟

一、题目描述

二、思路分析

2.1 分析

一开始只能想到暴力法。看了评论区还有另外一种方法,那就是从二维数组的最右上角或者最左边下角开始查找目标值,通过比较目标值和数组元素来控制行或列的变化来查找元素,最终得出结果。注意一下数组为空的特殊情况

2.2 图解

三、题解

class Solution {
    /*
    // 暴力法
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j] == target) {
                    return true;
                }
            }
        }
        return false;
    }
    */

    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        int i = matrix.length - 1, j = 0;
        while (i >= 0 && j < matrix[0].length) {
            if (target < matrix[i][j]) {
                i--;
            } else if (target > matrix[i][j]) {
                j++;
            } else {
                return true;
            }
        }
        return false;
    }
}