package alo;
//spares
public class 稀疏数组_ArrayQueue {
public static void main(String[] args) {
int[][] array = new int[10][10];
int index = 0; //搞到里面有几个值
array[0][3] = 10;
array[6][5] = 20;
array[7][7] = 30;
array[8][7] = 40;
array[5][6] = 50;
for (int a = 0; a < array.length; a++) {
for (int b = 0; b < array[a].length; b++) {
if (array[a][b] != 0) {
index++;
}
}
}
int[][] B = new int[index + 1][3]; //一行一个值,加第一行
B[0][0] = array.length;
B[0][1] = array[1].length;
B[0][2] = index; //稀疏数组第一行,多少行多少列多少值
index = 1; //循环索引,可随时操作
for (int a = 0; a < array.length; a++) { //第几列第几行有什么值
for (int b = 0; b < array[a].length; b++) {
if (array[a][b] != 0) {
B[index][0] = a; //A和B是两个数组,索引不一样,一个是遍历的索引作为值,一个是用多少值做的新数组,我傻了哎
B[index][1] = b;
B[index++][2] = array[a][b];
}
}
}
// for (int out[] : B) {
// for (int data : out) {
// if (data >= 10) {
// System.out.print(data + " ");
// } else {
// System.out.print(data + " ");
// }
// }
// System.out.println();
// }
int[][] newArr=new int[B[0][0]][B[0][1]]; //稀疏数组还原
for(int ind=0;ind<B.length-1;ind++){
newArr[B[ind+1][0]][B[ind+1][1]]=B[ind+1][2];
}
// for(int[] out:newArr){
// for(int data:out){
// if(data>=10){
// System.out.print(data+" ");
// }
// else{
// System.out.print(data+" ");
// }
// }
// System.out.println();
// }
}
}
稀疏数组简单代码实现
最新推荐文章于 2023-05-18 01:22:31 发布