二维数组中的查找

剑指Offer

题目描述

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

思路:

如上图:一共4行4列,假如要查找的数是5。

  1. 先从右上角开始 9 大于 5,第 4 列可以去掉

  2. 第 3 列第一个数 4 小于 5,第 1 行可以去掉

  3. 第 3 列第二个数 6 大于 5,第 3 列可以去掉

  4. 第 2 列第二个数 4 小于 5,第 2 行可以去掉

  5. 第 2 列第三个数 5 等于 5 找到了。

     public class Solution {
     public boolean Find(int target, int [][] array) {
         if(array == null){
             return false;
         }
         int row=array.length;
         int column=array[0].length;
         int i=0,j=column-1;
         while(i<row&&j>=0){
              if(array[i][j]>target){
                 j--;
             }else if(array[i][j]<target){
                 i++;
             }else if(array[i][j]==target){
                 return true;
             }   
         }
         return false;
     }
     }
    
posted @ 2018-07-11 18:43  罗贱人  阅读(78)  评论(0编辑  收藏  举报