二维数组转稀疏数组:
/**
* 二维数组转稀疏数组
* @param arr
* @return
*/
public int[][] toSparseArray(int[][] arr){
//获取二维数组行、列
int rowNum = arr.length;
int columnNum = arr[0].length;
//遍历查看二维数组中的有效数据个数
int sum = 0;
for (int[] row : arr){
for(int column : row){
if (column != 0){
sum++;
}
}
}
//创建稀疏数组
int[][] sparseArray = new int[sum+1][3];
//给稀疏数组第一行赋值,分别是行数、列数、有效值个数
sparseArray[0][0] = rowNum;
sparseArray[0][1] = columnNum;
sparseArray[0][2] = sum;
//遍历二维数组,给稀疏数组赋值
int count = 0;
for (int i = 0;i < rowNum;i++){
for (int j = 0; j < columnNum; j++){
if (arr[i][j] != 0){
count++;
sparseArray[count][0] = i ;
sparseArray[count][1] = j ;
sparseArray[count][2] = arr[i][j] ;
}
}
}
return sparseArray;
}
稀疏数组转二维数组:
/**
* 稀疏数组还原成二维数组
* @param sparseArray
* @return
*/
public int[][] resetArray(int[][] sparseArray){
//从稀疏数组第一行获取行、列、有效值个数
int rowNum = sparseArray[0][0];
int columNum = sparseArray[0][1];
int validNum = sparseArray[0][2];
//创建二维数组
int[][] array = new int[rowNum][columNum];
//遍历稀疏数组,还原二维数组
for (int i = 1; i <= validNum; i++) {
array[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
}
return array;
}
打印二维数组:
/**
* 打印二维数组
* @param arr
*/
public void printArray(int[][] arr){
for (int[] row : arr){
fo