Java查找二维数组中的值

码农公社  210.net.cn   210= 1024  10月24日一个重要的节日--码农(程序员)节

题目描述:          

完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

题目分析:  

根据题意可知该数组是有序的,因此该矩阵元素相当于是从小到大排列的; 如果从左下角开始查找较方便,因为左下角的值向上是递减的,向右是递增的; 当从左下角开始比较时,如果target传入的数大于它则列数加一进行比较 ,如果小于它则行数减一进行比较。

代码:


  public class Solution { 
      public boolean Find(int target, int [][] array) { 
         int rows = array.length; 
          //定义行数 
        int lies = array[0].length; 
          //定义列数 
          int i = 0; 
        //i用于计数 
         while((rows>0)&&(i<lies))
              //while中不满足条件时即停止循环
         {
             if(target>array[rows-1][i])
                //当目标大于左下角的值时,让列数自增
               {
                     i++;
                }
                else if(target<array[rows-1][i])
                 //当目标小于左下角的值时,让行数自减
                {
                     rows--;
                }else
                 {
                     //当前两种都不是时,说明找到目标
                     return true;
                 }
          }
                 //遍历完还没找到,说明目标在数组中不存在
                 return false;
     }
  }


评论