在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
输入描述:
array: 待查找的二维数组(我自己多输入了一个行数变量和列数变量) target:查找的数字
输出描述:
查找到返回true,查找不到返回false
java实现:
import java.util.Scanner; public class Solution { public boolean Find(int [][] array,int target) { boolean found = false; int rows = array.length; //行数 int columns = array[0].length;//列数 int row,column; if(rows>0&&columns>0){ row = 0; column = columns -1; while(row<rows&&column>=0){ if(array[row][column]==target){ found = true; break; } else if(array[row][column]>target){ --column;//如果右上角的数比要查找的数大,右上角数所在的列不满足要求,查找范围变为前面的列 }else{ ++row;//如果右上角的数比要查找的数小,右上角数所在的行不满足要求,查找范围变为下方的行 } } } return found; } public static void main(String args[]){ Scanner sc = new Scanner(System.in); int target = sc.nextInt(); int m = sc.nextInt(); int n = sc.nextInt(); int[][] array = new int[m][n]; for(int i= 0;i<m;i++){ for(int j=0;j<n;j++){ array[i][j] = sc.nextInt(); } } Solution s = new Solution(); System.out.println(s.Find(array, target)); } }
牛客网上貌似只需要完成方法就可以了,不需要自己写输入输出。这是本地测试的代码