稀疏数组
意义:减少内存空间的浪费,起到压缩数据的作用。
原理:
第一行row表示总行数,col表示总列数,value非 0 的个数为8。第二行行数从0开始,row表示第一个数据在哪个行数,col表示列数位置,value表示在这个位置上的数值为都少,往下依旧这样。
案例:
- 二维数组转解题思路:
1、遍历原始的二维数组,得到有效的数据个数sum
2、根据sum创建稀疏数组sparseArr int[sum+1][3]
3、将二位数组的有效数据存放到稀疏数组表中
- 稀疏数组转原始二维数组思路:
1、读取稀疏数组的第一行,并根据数据创建二维数组,比如上面的 int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]]
。
2、读取稀疏数组从第二行起的数据,并赋值给原始二维数组即可。
演示代码:
/*
* 五子棋矩阵转换为稀疏数组,存储节省空间,提高效率
*/
package 稀疏数组;
public class sparseArray {
public static void main(String[] args) {
//创建11x11的稀疏数组
//0表示为空,1表示为黑棋,2表示白棋
int[][] chessArr1 = new int[11][11];
chessArr1[2][2] = 1;
chessArr1[3][3] = 2;
//输出五子棋矩阵
for(int[] row : chessArr1) {
//使用强化版for循环输出数据,输出一行
for