二维数组
Posted xiaofuzi123456
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组相关的知识,希望对你有一定的参考价值。
1.二维数组遍历
(1).第一种遍历方式(for循环)
//声明一个二维数组 int chessArr[] [] =new int[11][11]; chessArr[1][2]=1; chessArr[2][3]=2; chessArr[3][4]=3; //输出原始的二维数组,遍历二维数组第一种方法 for (int i = 0; i < chessArr.length; i++) { for (int j = 0; j <chessArr[i].length ; j++) { System.out.printf("%d ",chessArr[i][j]); } System.out.println(); }
(2).第一种遍历方式(forEach循环)
//声明一个二维数组 int chessArr[] [] =new int[11][11]; chessArr[1][2]=1; chessArr[2][3]=2; chessArr[3][4]=3; //输出原始的二维数组,遍历二维数组第二方法 System.out.println("数组遍历的第二种方式"); for(int [] row :chessArr){ for (int data:row){ System.out.printf("%d ",data); } System.out.println(); }
2.二维数组转成稀疏数组
(1).什么是稀疏数组
比如有一个4行4列的二维数组int[4][4]转换成稀疏数组,
稀疏数组的第0行,4,4,4 分别代表的是二维数组有4行,4列,有4个不为0的值。
稀疏数组的第1行,0,0,1 代表的是在二维数组的第0行第0列的值为1
稀疏数组的第2行,1,1,2 代表的是在二维数组的第1行第1列的值为2
以此类推........
说明如下图:
(2).实现思路
首先遍历二维数组,得到有效数据的个数为sum(这里指的是二维数组中不为0的值),然后根据sum创建稀疏数组 int sparArr[sum+1][3],最后将二维数组中的值存放到二维数组中。
public static void main(String[] args) { //声明一个二维数组 int chessArr[] [] =new int[11][11]; chessArr[1][2]=1; chessArr[2][3]=2; chessArr[3][4]=3; //先统计二维数组中不为0数据的个数 int sum=0; for (int i = 0; i <chessArr.length ; i++) { for (int j = 0; j <chessArr[i].length ; j++) { if (chessArr[i][j]!=0){ sum++; } } } System.out.println("二维数组中不为0的个数:"+sum); //创建稀疏数组,把二维数组中的值存放到稀疏数组中 int sparseArr[][] = new int[sum + 1][3]; sparseArr[0][0]=11; sparseArr[0][1]=11; sparseArr[0][2]=sum; int count = 0; //count 用于记录是第几个非0数据 for (int i = 0; i <chessArr.length ; i++) { for (int j = 0; j <chessArr[i].length ; j++) { if (chessArr[i][j]!=0){ count++; sparseArr[count][0]=i; sparseArr[count][1]=j; sparseArr[count][2]=chessArr[i][j]; } } } System.out.println("稀疏数组为!!!!!!!!!!"); for (int i = 0; i <sparseArr.length ; i++) { for (int j = 0; j <sparseArr[i].length ; j++) { System.out.printf("%d ",sparseArr[i][j]);; } System.out.println(); } System.out.println("稀疏数组转换成二维数组"); //先通过稀疏数组的第一行,声明一个二维数组 int arr[] [] =new int [sparseArr[0][0]][sparseArr[0][1]]; //再吧对应的值复制到二维数组指定的位置 for(int i=1;i<sparseArr.length;i++){ arr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2]; } }
3.稀疏数组转换成二维数组
(1).实现思路
首先读取稀疏数组的第一行,创建原始的二维数组,比如 int [4][4],然后再读取稀疏数组中后几行的数组,存放到二维数组中。
public static void main(String[] args) { //声明一个二维数组 int chessArr[] [] =new int[11][11]; chessArr[1][2]=1; chessArr[2][3]=2; chessArr[3][4]=3; //先通过稀疏数组的第一行,声明一个二维数组 int arr[] [] =new int [sparseArr[0][0]][sparseArr[0][1]]; //再把对应的值复制到二维数组指定的位置 for(int i=1;i<sparseArr.length;i++){ arr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2]; } System.out.println("重新得到的二维数组为@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); for (int i = 0; i <arr.length ; i++) { for (int j = 0; j <arr[i].length ; j++) { System.out.printf("%d ",arr[i][j]);; } System.out.println(); } }
完成。
以上是关于二维数组的主要内容,如果未能解决你的问题,请参考以下文章
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段