java稀疏数组
java稀疏数组
因为有些二维数组大部分元素都是为0,因此记录了很多没有意义的数据。因此引入稀疏数组(一种数据结构)
处理方式:记录一共有几行几列,有多少个不同的值。
package charpter4; public class Demo { public static void main(String[] args) { //0:没有棋子,1黑棋,2白棋 int[][] array1= new int[11][12]; array1[1][2]=1; array1[2][3]=2; //输出最原始的数组 System.out.println("输出最原始的数组:"); for(int[] ints:array1){ for(int anInt:ints){ System.out.print(anInt+"\t"); } System.out.println(); } //转换为稀疏数组 //获取有效值个数 int sum = 0; for (int[] value : array1) { for (int j = 0; j < array1[0].length; j++) { if (value[j] != 0) sum++; } } //创建一个稀疏数组 int[][] array2 = new int[sum+1][3]; array2[0][0]=array1.length; array2[0][1]=array1[0].length; array2[0][2]=sum; //将非0元素的值放入稀疏数组 int count=0; for(int i=0;i<array1.length;i++) for(int j=0;j<array1[0].length;j++){ if(array1[i][j]!=0){ count++; array2[count][0]=i; array2[count][1]=j; array2[count][2]=array1[i][j]; } } System.out.println("稀疏数组:"); for(int[] ints:array2){ for(int anInt:ints){ System.out.print(anInt+" "); } System.out.println(); } //稀疏数组还原 int[][] array3=new int[array2[0][0]][array2[0][1]]; int cnt=1; while(cnt<=array2[0][2]){ array3[array2[cnt][0]][array2[cnt][1]]=array2[cnt][2]; cnt++; } System.out.println("稀疏数组还原:"); for(int[] ints:array3){ for(int anInt:ints){ System.out.print(anInt+"\t"); } System.out.println(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术