剑指Offer:二维数组中的查找(4)
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:
从右上角或左下角开始找,逐行删除,或者用二分法查找
代码实现:
1 public class Test4 { 2 public static boolean find(int[][] array,int target){ 3 if (array==null){ 4 return false; 5 } 6 int row=0; 7 int column=array[0].length-1; 8 9 while (row<array.length && column>=0){ 10 if (array[row][column]==target){ 11 return true; 12 } 13 if (array[row][column]>target){ 14 column--; 15 }else{ 16 row++; 17 } 18 } 19 return false; 20 } 21 22 public static void main(String[] args) { 23 int[][] array ={{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}}; 24 System.out.println(find(array,7)); 25 } 26 }