剑指offer(牛客)---1.二维数组中的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
第一种方式,直接暴力进行对比的方式:
class Solution{ public static boolean find(int target,int[][] array) { boolean flag=false; int rows=array.length; int columns=array[0].length; for(int i=0;i<rows;i++) { for(int j=0;j<columns;j++) { if(array[i][j]==target) { flag=true; break; } } } return flag; } }
第二种方式:从右边进行比较判断:
class SolutionOptimize{ public static boolean find(int target,int[][] array) { boolean flag=false; int rows=array.length-1; int columns=array[0].length-1; final int ROWS=rows; final int COLUMNS=columns; int row=0; int column=0; while(row<=ROWS&&column<=COLUMNS) { if(array[row][COLUMNS]==target) { flag=true; break; }else if(array[row][COLUMNS]>target){ for(int i=COLUMNS;i>=0;i--) { if(array[row][i]==target) { flag=true; break; } } row++; }else { row++; } } return flag; }