Open Zakariyya opened 4 years ago
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用系数数组来保存该数组
处理方式:
eg,五子棋(一个 6 * 7 = 42 的棋盘):
(原始二维数组) 0 0 0 22 0 0 15 0 11 0 0 0 17 0 0 0 0 -6 0 0 0 0 0 0 0 0 39 0 91 0 0 0 0 0 0 0 0 25 0 0 0 0
因为该二维数组的很多值默认是0,因此记录了很多没有意义的数据,我们需要压缩将其转换成 稀疏数组
换成 稀疏数组
下面每一行都代表了非零值的行列
稀疏后数组从 6 7 = 42 变成 9 3 = 27 的数组
一个原始二维数组: 11 * 11
(原始二维数组) 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
换成稀疏数组:3 * 3
row col val 0 11 11 2 1 1 2 1 2 2 3 2
稀疏数组的第一行,存的就是原始数组的行和列
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用系数数组来保存该数组
处理方式:
eg,五子棋(一个 6 * 7 = 42 的棋盘):
换成 稀疏数组
下面每一行都代表了非零值的行列
稀疏后数组从 6 7 = 42 变成 9 3 = 27 的数组
应用实例
五子棋,棋盘
一个原始二维数组: 11 * 11
换成稀疏数组:3 * 3
二维数组 转 稀疏数组 的思路
稀疏数组 转 原始二维数组 的思路