day02

二维数组中的查找

问题:

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路:

1.依次遍历数组中的行和列,如果找到数组中的整数和目标值一样,则返回true,否则,返回false

package day02;

public class test01 {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if(matrix==null || matrix.length==0||matrix[0].length==0){
            return false;
        }
       int rows = matrix.length,colums=matrix[0].length;
        for (int i =0;i<rows;i++) {
            for (int j = 0; j < colums; j++) {
                if (matrix[i][j] == target) {
                    return true;
                }
            }
        }
        return false;
    }
}

2.二维数组从上到下从左到右依次增加

//线性查找
package day02;

public class test02 {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return false;
        }
        int rows = matrix.length, colums = matrix[0].length;
        int row = 0, column = colums - 1;
        while (row < rows && column >= 0) {
            int num = matrix[row][column];
            if (num == target) {
                return true;
            } else if (num > target) {
                column--;
            } else {
                row++;
            }
        }
        return false;
    }}

 

posted @ 2020-04-10 23:10  行之!  阅读(103)  评论(0编辑  收藏  举报