剑指Offer二维数组查找数字题目

题目:


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


思路:

因为每一行都是递增,每一列也是递增,所以每一行的最左边为一行的最小,最右边为一行的最大,选取最下角或者右上角,
当target小于元素a[row][col]时,那么target必定在元素a所在行的左边,
即col--;
当target大于元素a[row][col]时,那么target必定在元素a所在列的下边,
即row++;

 

代码实现:

public boolean Find(int target, int [][] array) {
  int row=0;
  int col=array[0].length-1;
  while(row<=array.length-1&&col>=0){
    if(target==array[row][col])
      return true;
    else if(target>array[row][col])
      row++;
    else
      col--;
  }
  return false;
}

猜你喜欢

转载自www.cnblogs.com/hmy-BigData/p/11885275.html