在实际需求中 当大部分数组元素为0或者为相同值的时候
可以用一个小规模的数组代替 起到简化的作用 下面分析思路并实现代码
思路分析:
1.首先遍历原数组 找到这个数组中特殊元素的个数 作为稀疏数组的大小
2.创建新的稀疏数组 将有效数据存入
行 | 列 | 值 |
public class sparsearray {
public static void main(String[] args) {
//创建一个11*11的围棋棋盘用二维数组代替 其中分别有两个棋子
int chess[][] = new int[11][11];
chess[1][2] = 1;
chess[2][4] = 2;
int sum=0;
//分别用1,2代表两个不同的棋子
for (int j = 0; j < 11; j++) {
for (int k = 0; k < 11; k++) {
System.out.print(chess[j][k]+" ");
if(chess[j][k]!=0){
sum++;
}
}
System.out.println();
}
int sparsearr[][]=new int[sum+1][3];
//给稀疏数组赋值
sparsearr[0][0]=11;
sparsearr[0][1]=11;
sparsearr[0][2]=sum;
//第一行存储原来数组的行 列 有效值
int count=0;
for (int j = 0; j < 11; j++) {
for (int k = 0; k < 11; k++) {
if(chess[j][k]!=0){
count++;
sparsearr[count][0]=j;
sparsearr[count][1]=k;
sparsearr[count][2]=chess[j][k];
}
}
}
System.out.println("-----稀疏数组-----");
for(int i=0;i< sparsearr.length;i++){
System.out.println(sparsearr[i][0]+" "+sparsearr[i][1]+" "+sparsearr[i][2]);
}
}
}