题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

 

解题思路

   1.  二维数组是有序的。从左下角来看,向上数字递减,向右数字递增;从右上角来看,向下数字递增,向左数字递减。

   2.  因此可以从左下角或者右上角开始查找。从左下角查找,当要查找数字比左下角数字大时,右移;当要查找数字比左下角数字小时,上移。

   3.  从右上角查找,当要查找数字比右上角数字大时,下移;当要查找数字比右上角数字小时,左移。

代码

 1     public boolean Find(int target, int [][] array) {
 2 
 3         // 二维数组的行数和列数
 4         int rowCount = array.length;
 5         int colCount = array[0].length;
 6         // 从左下角开始查找
 7         for(int i = rowCount-1,j = 0;i >= 0 && j <= colCount-1;){
 8             if (target == array[i][j]){
 9                 return true;
10             }
11             if (target < array[i][j]){
12                 // 上移
13                 i--;
14                 continue;
15             }
16             if(target > array[i][j]){
17                 // 右移
18                 j++;
19                 continue;
20             }
21         }
22         return false;
23     }

 

posted on 2019-06-16 16:35  Hush!  阅读(127)  评论(0编辑  收藏  举报