您的位置:首页 > Web前端

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

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

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

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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: