剑指offer-二维数组查找

题目描述:给定一个二维数组,它的每一行从左往右递增,每一列从上往下递增,在该数组中查找目标值,如果存在返回true,否则返回false。

题目解法

 1 class Solution{
 2     public boolean findTarget(int target,int[][] array){
 3         int rows = array.length;  //数组的行数
 4         int cols = array[0].length;  //数组的列数
 5         if(rows==0||cols==0) return false;
 6         for(int col=0;col<cols;col++){
 7             if(target==array[0][col]||target==array[rows-1][col])return true;
 8             else if(target>array[0][col]&&target<array[rows-1][col]){  
 9                 for(int row=1;row<rows-1;row++){
10                     if(target==array[row][col])return true;
11                 }
12             }
13         }
14         return false;
15     }
16 }

解题思路:由于是有序数组,因此数组的第一行、最后一行,第一列、最后一列构成了边界,然后可以通过target与边界值的大小关系,确定target的区间,然后在该区间遍历寻找target。

posted @ 2019-12-18 21:57  寻找最优解  阅读(157)  评论(0编辑  收藏  举报