稀疏数组的实现
1 ,创建一个二维数组 赋予初始值
int[][] sparsearr = new int [11][11];
sparsearr[1][2] = 1;
sparsearr[2][2] = 2;
sparsearr[3][2] = 2;
sparsearr[4][2] = 2;
2 根据原始数组 创建稀疏数组
2.1 计算原始数组的有效值个数 num
int num = 0;
for (int[] s1:sparsearr) {
for (int s2: s1) {
if (s2 != 0){
num += 1;
}
}
}
2.2 初始化稀疏数组的第0行
int[][] array = new int[num+1][3];
array[0][0] = sparsearr.length;
array[0][1] = sparsearr[0].length ;
array[0][2] = num;
2.3 遍历原数组 存入稀疏数组
int[][] array = new int[num+1][3];
array[0][0] = sparsearr.length;
array[0][1] = sparsearr[0].length ;
array[0][2] = num;
for (int i= 0;i<sparsearr.length-1;i++){
for (int j =0;j<sparsearr[0].length-1;j++){
if (sparsearr[i][j] != 0){
count ++ ;
array[count][0] = i;
array[count][1] = j;
array[count][2] = sparsearr[i][j];
}
}
}
根据稀疏数组还原 原数组
1 初始化二维数组 //array 为稀疏数组
2遍历稀疏数组 给初始数组赋值
for (int j = 0;j<array[0].length;j++){
init[array[i][0]][array[i][1]] = array[i][2];
}
}
本文来自博客园,作者:冰莫莫,转载请注明原文链接:https://www.cnblogs.com/icemomo/p/15999929.html