二维数组中的查找
问题:
在一个 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; }}