问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
算法分析:可以直接遍历,不过时间复杂度太高,因为有序,可以从左下角查找,也可以从右上角查找。
public class Array { //二维数组遍历 public boolean Find(int [][] array,int target) { for(int i = 0; i < array.length; i ++) { for(int j = 0; j < array[i].length; j ++) { if(array[i][j] == target) { return true; } } } return false; } //从左下角开始查找 public boolean Find2(int[][] array, int target) { int i = array.length - 1; int j = 0; while(i >= 0 && j <= array[0].length - 1) { if(target > array[i][j]) { j ++; } else if(target < array[i][j]) { i --; } else { return true; } } return false; } }