网站文案优化,安徽省城乡建设网站,建设银行租房平台网站6,猎头公司网站素材考察点#xff1a; 考察数据结构二维数组知识点#xff1a; 1.java中的数据类型分为基本类型和引用类型#xff0c;数组属于引用类型#xff0c;引用类型的变量中存储的是地址#xff0c;该地址指向内存中的某个对象#xff0c;参考c中的指针。2.一维数组定义#xff0c…考察点 考察数据结构二维数组知识点 1.java中的数据类型分为基本类型和引用类型数组属于引用类型引用类型的变量中存储的是地址该地址指向内存中的某个对象参考c中的指针。2.一维数组定义初始化遍历2.1.先定义后初始化尤其注意如果只定义没有初始化那么元素会被初始化为数据类型的默认值int会被初始化为0float会被初始化为0.0boolean会被初始化为falseint arr[] new int[2];arr[0] 10;2.2.定义的时候同时初始化int arr[] {1,2};int arr[] new int[] {1,2};2.3.数组遍历2.3.1.for (int i 0;i arr.length;i) {System.out.println(arr[i]);}2.3.2.for (int a : arr) {System.out.println(a);}2.3.3.java标准库System.out.println(Arrays.toString(arr));3.二维数组定义初始化遍历3.1.先定义后初始化int arr[][] new int[2][3];int brr[] new int[3];int crr[] new int[3];arr[0] brr;arr[1] crr;注意此时arr.length 2,而arr[0].length 0,arr[1].length 0;3.2.定义的时候同时初始化int arr[][] {{1,2,3},{4,5,6},{7,8,9}}3.3.数组的遍历3.3.1 for (int i 0;i arr.length; i) {for (int j 0;jarr[0].length;j) {System.out.println(arr[i][j]);}}3.3.2.for (int brr[] : arr) {for (int n : brr) {System.out,println(n);}}题目
分析 关于数组这个数据结构的考点无非就是数组遍历。本题目要求判断一个二维数组中是否含有某一个数字直接遍历二维数组也可以满足需求但此种解法复杂度为O(n^2)题目不会这么简单那延伸一下考察的点无非就是如何提升遍历的效率试想一下每次二维数组一个循环只能遍历掉一个元素如果一个循环遍历掉一块元素的话那效率就会极大的提升。仔细观察题目其中设定了数组的一些属性那么这些属性的目的大概率就是冲着减少遍历元素的目的去的。每行每列都是递增排序试想如果一行(或者一列)中最大的那个元素比待查找的元素小那这个待查找的值肯定不会出现在这个最大元素所在的行(或者列)如果一行(或者一列)中最小的那个元素比待查找的元素大那么这个待查找的值也肯定不会出现在这个最小元素所在的行(或者列)。而题目中的这个二维数组中左上角和右下角的元素就满足这样的特性因为左上角元素是行的最大值列的最小值右下角是行的最小值列的最大值拿左上角举例如果该元素比待查找的元素小那么这个元素所在的行就可以不用遍历了如果该元素比待查找的元素大那么这个元素所在的列就可以不用遍历了。 代码
public class Three {public static void main(String [] args) {int arr[][] {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};System.out.println(find(arr,arr.length,arr[0].length,7));System.out.println(find(arr,arr.length,arr[0].length,71));int brr[][] new int[0][0];System.out.println(find(brr,brr.length,0,71));int crr[][] new int[1][0];crr[0] new int[0];System.out.println(find(crr,crr.length,crr[0].length,71));}public static boolean find(int [][] arr,int rows,int cols,int val) {if (null arr || arr.length 0|| (arr.length 1 arr[0].length 0)|| rows 0 || cols 0) {return false;}int row 0;int col cols - 1;while (row rows col 0) {if (arr[row][col] val) {return true;}if (arr[row][col] val) {row ;} else {col --;}}return false;}
}