介绍
使用场景
棋盘存储
实现思路
二维数组转稀疏数组
1.遍历原始数组arr,得到有效数据的个数sum
2.根据sum创建稀疏数组sparseArr int[sum+1][3]
3.将二维数组的有效数据存入到稀疏数组
js版
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function sparseArr (arr) { const sparseArr = [[]] sparseArr[0][0] = arr.length sparseArr[0][1] = arr[1].length sparseArr[0][2] = 0
for (let i = 0; i < arr.length; i++) { for(let j = 0; j < arr[i].length; j++) { if(arr[i][j] !== 0) { sparseArr[0][2]++ sparseArr.push([i, j, arr[i][j]]) } } } return sparseArr }
|
Java版
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public static int[][] sparseArr(int[][] arr) { int sum = 0; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { if (arr[i][j] != 0) { sum++; } } } int sparseArr[][] = new int[sum+1][3]; sparseArr[0][0] = arr.length; sparseArr[0][1] = arr[0].length; sparseArr[0][2] = sum; int count = 0; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { if (arr[i][j] != 0) { count++; sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = arr[i][j]; } } } return sparseArr; }
|
稀疏数组转二维数据
1.先读取稀疏数组的第一行,创建二维数组
2.读取稀疏数组后几行数据,赋值给二维数组
js版
1 2 3 4 5 6 7
| function reductionArr(sparseArr) { const arr = Array(sparseArr[0][0]).fill(0).map(x => Array(sparseArr[0][1]).fill(0)); for(let i = 1; i < sparseArr.length; i++) { arr[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2] } return arr }
|
Java版
1 2 3 4 5 6 7
| public static int[][] reductionArr(int[][] sparseArr) { int arr[][] = new int[sparseArr[0][0]][sparseArr[0][1]]; for (int i = 1; i < sparseArr.length; i++) { arr[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2]; } return arr; }
|