1.问题描述
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
2.问题分析
水平方向、垂直方向二重循环查找
3.源代码
package www.nowcoder.com.conquerOffer.array; /** * 二维数组中的查找 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 * http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e?rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking * @author sunny * */ public class TwoDimensionalArrayFind { /** * 二维数组查找 * @param array 二维数组 * @param target 目标数字 * @return 是否找到(true:找到;false:没找到) */ public boolean Find(int [][] array,int target) { //判断二维数组是否为空 if(null == array || array.length <= 0) return false; for(int i = 0; i < array.length; i++){ //判断一维数组是否为空 int[] arr = array[i]; if(null == arr || arr.length <= 0) continue; for(int j = 0; j < arr.length; j++){ if(target == arr[j]){ System.out.println("array[" + i + "][" + j + "]=" + target); return true; } } } return false; } public static void main(String[] args) { int[][] array = new int[][]{{1, 2},{3, 4, 5, 6},{},{7, 8, 9, 10, 11},{12}}; // int[][] array = new int[][]{}; TwoDimensionalArrayFind twoDimensionalArrayFind = new TwoDimensionalArrayFind(); boolean isFind = twoDimensionalArrayFind.Find(array, 10); System.out.println(isFind); } }
4.运行效果
1 array[3][3]=10 2 true
时间: 2024-10-22 05:26:13