Day551.稀疏数组 -数据结构和算法Java
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day551.稀疏数组 -数据结构和算法Java相关的知识,希望对你有一定的参考价值。
稀疏数组
一、什么是稀疏数组
稀疏数组
可以看做是普通数组的压缩
,但是这里说的普通数组是值无效数据量远大于有效数据量的数组
二、分析需求案例
将左侧的二维数组 ,通过稀疏数组
的方式,转变为右侧的数组结构
三、代码简单实现
package com.achang.sparsearray;
/**
* @Author Achang
* @Date 2022/3/6 21:33
**/
public class SparseArray
public static void main(String[] args)
//创建一个二维数组 11*11
//0代表没棋 1黑子 2白子
int[][] originArr = new int[11][11];
originArr[1][2] = 1;
originArr[2][3] = 1;
originArr[4][5] = 2;
System.out.println("原始的二维数组");
for (int[] ints : originArr)
for (int anInt : ints)
System.out.printf("%d\\t",anInt);
System.out.println();
//获取有效数字个数
int sum = 0;
for (int[] ints : originArr)
for (int anInt : ints)
if (anInt!=0)
sum++;
System.out.println(sum);
//创建对应的稀疏数组
int[][] sparseArray = new int[sum+1][3];
sparseArray[0][0] = 11;
sparseArray[0][1] = 11;
sparseArray[0][2] = sum;
//遍历原始二维数组,将有效数据,存储到稀疏数组中
int count = 0;//用于记录是第几个非零数据
for (int i = 0; i < originArr.length; i++)
for (int i1 = 0; i1 < originArr[i].length; i1++)
if (originArr[i][i1]!=0)
count++;
sparseArray[count][0] = i;
sparseArray[count][1] = i1;
sparseArray[count][2] = originArr[i][i1];
System.out.println("===========");
//输出稀疏数组
for (int[] ints : sparseArray)
for (int anInt : ints)
System.out.printf("%d\\t",anInt);
System.out.println("===========");
//将稀疏数组恢复成二维数组
int[][] originArr1 = new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++)
originArr1[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
for (int[] ints : originArr1)
for (int anInt : ints)
System.out.printf("%d\\t",anInt);
System.out.println();
以上是关于Day551.稀疏数组 -数据结构和算法Java的主要内容,如果未能解决你的问题,请参考以下文章