剑指offer习题---二维数组中的查找

来源:互联网 发布:打印杨辉三角java 编辑:程序博客网 时间:2024/04/29 14:29

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

  其实质就是一种散列的思想,对于每一列来说,我只需要将待查询的数和每一列第一行(或者每一行第一列)比较,看看其属于某一列(行)然后再在里面进行比较,确定具体位置,当然书上的写法比较有技巧性,将两个步骤合在一起.

public class search {  public static boolean Find(int[][] matrix,int rows,int columns,int number){//矩阵,行,列,待比较的数  boolean found=false;  if (matrix!=null&&rows>0&&columns>0){//合理性检查  int row=0;//行数为第一行  int column=columns-1;//列数为前一行  while(row<rows&&column>=0){  if (matrix[row][column]==number){  found=true;  break;  }  else if (matrix[row][column]>number){  column--;  }else row++;  }  }return found;    }  public static void main(String args[]){  int matrix[][]=new int[4][4];  matrix[0][0]=1;  matrix[0][1]=2;  matrix[0][2]=8;  matrix[0][3]=9;  matrix[1][0]=2;  matrix[1][1]=4;  matrix[1][2]=9;  matrix[1][3]=12;  matrix[2][0]=4;  matrix[2][1]=7;  matrix[2][2]=10;  matrix[2][3]=13;  matrix[3][0]=6;  matrix[3][1]=8;  matrix[3][2]=11;  matrix[3][3]=15;  System.out.println(Find(matrix,4,4,6));  }}


0 0
原创粉丝点击