二维数组中的查找

来源:互联网 发布:龙岗大运软件小镇 编辑:程序博客网 时间:2024/06/03 18:44

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

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

分析可知,由于数组已经是有序的,所以查找时,只要从最右上方开始遍历,当目标值大于最右边值,说明内循环的所有数都小于目标值,直接break跳出内循环。二层循环实现过程如下所示:
/** * @author jcm * @see 二维数组中查找 * @param arr * @param target * @return */public static boolean FindValueFrom2Matrix(int[][] arr,int target){//沒有做判断,当数组不是二维数组时,返回falseif(arr.length<1 || arr[0].length<1)return false;for(int i=0;i<arr.length;i++){for(int j=arr[0].length-1;j>=0;j--){if(target > arr[i][j]){break;//目标值大于最右边的值,说明该行所有的数都小于目标值,直接循环第二层,则跳出内循环}else{if(arr[i][j] == target){return true;}}}}return false;}
一个循环实现
/** * 使用一个循环查找是否存在一个数 * @param array * @param target * @return */public boolean find(int[][] array,int target){if(array == null || array.length<1 || array[0].length < 1){return false;}int rows = array.length;int columns = array[0].length;int row = 0;int column = columns - 1;while(row<rows && column >= 0){if(array[row][column] == target){return true;}else if(array[row][column]>target){column--;}else{row++;}}return false;}



0 0
原创粉丝点击