二维数组查找

问题描述

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

特点:如下图,基本上是一个m*n的矩阵,排列顺序如题目描述的一样

思路:从右上角的数开始查找,对于右上角的数来说,他的左侧的数比自己小,下方的数比自己大,如图:将待查找的数据与右上方的数比较时,如果比9小,查再查找9左边的数,如果比9大,则继续查找9下方的数,依次继续比较,知道找到或者x>=矩阵行数或者y<0,换句话说就是都出矩阵边界了还没有找到的话就不存在。

public class Solution {
    public boolean Find(int target, int [][] array) {
        int row=array.length;
      System.out.println(row);
      int width=array[row-1].length;
      System.out.println(width);
      int x=0;
      int y= width-1;
      while(x<row&&y>-1){
          if(array[x][y]==target){
              return true;
          }else if(array[x][y]>target){
              y--;
          }else if(array[x][y]<target){
              x++;
          }
      }
      return false;
    }
}

 

posted @ 2017-09-02 21:38  Actexpler  阅读(154)  评论(0编辑  收藏  举报