java 稀疏数组
2021/7/14 12:34:51
本文主要是介绍java 稀疏数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
/** * 稀疏数组 * * @author Mulun */ public class SparseArray2 { /** * 原始数组 * <p> * 规则: * <p> * 0:无数据 * <p> * 1:黑棋 * <p> * 2:白棋 */ static int[][] chessArr = new int[19][19]; /** * 模拟原始数组数据 */ static { chessArr[3][3] = 1; chessArr[5][5] = 2; } @Test public void main() { // 原始数组 System.out.println("============原始二维数组"); Arrays.stream(chessArr).forEach(r -> { Arrays.stream(r).forEach(p -> System.out.print("\t" + p)); System.out.println(); }); // 转换成稀疏数组 // 1.获取原始二维数组的有效数据个数 // 记录原始二维数组的有效数据个数 int sum = 0; for (int i = 0; i < chessArr.length; i++) { for (int j = 0; j < chessArr[0].length; j++) { if (chessArr[i][j] != 0) { sum++; } } } // 2.创建稀疏数组 int[][] spArray = new int[sum + 1][3]; // 3.给稀疏数组赋值 spArray[0][0] = chessArr.length; spArray[0][1] = chessArr[0].length; spArray[0][2] = sum; // 用来记录是第几个非0数据 int count = 0; for (int i = 0; i < chessArr.length; i++) { for (int j = 0; j < chessArr[0].length; j++) { if (chessArr[i][j] != 0) { count++; // 第几行 spArray[count][0] = i; // 第几列 spArray[count][1] = j; // 值是什么 spArray[count][2] = chessArr[i][j]; } } } System.out.println("============稀疏数组"); Arrays.stream(spArray).forEach(r -> { Arrays.stream(r).forEach(p -> System.out.print("\t" + p)); System.out.println(); }); // 转换回二维数组 // 创建二维数组 int[][] chessArr2 = new int[spArray[0][0]][spArray[0][1]]; // 给二维数组赋值 for (int i = 1; i < spArray.length; i++) { chessArr2[spArray[i][0]][spArray[i][1]] = spArray[i][2]; } System.out.println("============恢复后的二维数组"); Arrays.stream(chessArr2).forEach(r -> { Arrays.stream(r).forEach(p -> System.out.print("\t" + p)); System.out.println(); }); // 以时间,换空间,稀疏数组 } }
这篇关于java 稀疏数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16使用vue3+springboot构建简单Web应用教程
- 2024-11-15全栈开发项目实战:从入门到初级项目的实现
- 2024-11-15数据库项目实战:从入门到初级应用教程
- 2024-11-15IDEA项目实战入门教程
- 2024-11-15IT编程项目实战:新手入门的全面指南
- 2024-11-15Java开发项目实战:新手入门与初级技巧
- 2024-11-15Java零基础项目实战:从入门到独立开发
- 2024-11-15MyBatis Plus教程:入门与基础操作详解
- 2024-11-15MyBatis-Plus教程:新手入门与实战技巧
- 2024-11-15MyBatis教程:从入门到实践