[AppleScript] 纯文本查看 复制代码
[9 * 3 = 27]
| 行 | 列 | 值 |
|row |col |val |
---|----|----|----|
[0]| 6 | 7 | 8 | # 第一行第一列记录着【行】【列】【一共有多少个值】
---|----|----|----|
[1]| 0 | 3 | 22 | # 第0行第3列的值为22
[2]| 0 | 6 | 15 | # 第0行第6列的值为15
[3]| 1 | 1 | 11 | # 第1行第1列的值为11
[4]| 1 | 5 | 17 | # .....
[5]| 2 | 3 | -6 |
[6]| 3 | 5 | 39 |
[7]| 4 | 0 | 91 |
[8]| 5 | 2 | 28 |
[AppleScript] 纯文本查看 复制代码
"二维数组 -> 稀疏数组 -> 二维数组"
public class SparseArray {
public static void main(String[] args) {
"创建一个原始的二维数组 【11 X 11】"
"0 表示没有棋子,1表示黑子,2表示蓝子"
int[][] chessArray = new int[11][11];
chessArray[1][2] = 1; // 1 个黑子
chessArray[2][3] = 2; // 1 个蓝子
"打印棋盘"
for (int[] arr : chessArray) {
System.out.println(Arrays.toString(arr));
}
"转稀疏数组"
System.err.println("---------------------------------");
"遍历二维数组获取非零个数"
int totalCount = 0;
for (int[] arr : chessArray) {
for (int ele : arr) if (ele != 0) totalCount++;
}
"创建稀疏数组"
int[][] sparseArray = new int[totalCount + 1][3];
sparseArray[0][0] = chessArray.length; // 行
sparseArray[0][1] = chessArray[0].length; // 多少列
sparseArray[0][2] = totalCount; // 有多少个元素
int count = 1;
outer:
for (int i = 0; i < chessArray.length; i++) {
for (int j = 0; j < chessArray.length; j++) {
if (chessArray[j] != 0) {
sparseArray[count][0] = i;
sparseArray[count][1] = j;
sparseArray[count][2] = chessArray[j];
if (++count == totalCount + 1) {
System.err.println("all element had put into sparseArray");
break outer;
}
}
}
}
"打印稀疏数组"
for (int[] arr : sparseArray) {
System.out.println(Arrays.toString(arr));
}
System.err.println("---------------------------------");
int[][] resultArr = new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++) {
int row = sparseArray[0];
int col = sparseArray[1];
int val = sparseArray[2];
resultArr[row][col] = val;
}
for (int[] arr : resultArr) {
System.out.println(Arrays.toString(arr));
}
}
}