1、稀疏数组


public class SparseArray { public static void main(String[] args) { int[][] arr={{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,28,0,0,0,0}}; // printArray(arr); int[][] res = arrayToSparse(arr); printArray(res); int[][] array = sparseToArray(res); printArray(array); } //输出二维数组 public static void printArray(int[][] arr){ int row=arr.length; int col=arr[0].length; if(row==0||col==0){ return; } for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ System.out.print(arr[i][j]); System.out.print(" "); } System.out.println(); } } //二维数组转化稀疏数组 public static int[][] arrayToSparse(int[][] arr){ int row=arr.length; int col=arr[0].length; int sum=0; if(row==0||col==0){ return null; } for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ if(arr[i][j]!=0){ sum++; } } } //初始化数组 int[][] array=new int[sum+1][3]; array[0][0]=row; array[0][1]=col; array[0][2]=sum; int temp=0; for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ if(arr[i][j]!=0){ temp++; array[temp][0]=i; array[temp][1]=j; array[temp][2]=arr[i][j]; } } } return array; } //稀疏数组转化二维数组 public static int[][] sparseToArray(int[][] arr){ if(arr.length==0||arr[0].length==0){ return null; } int row=0; int col=0; int temp=0; int[][] array=new int[arr[0][0]][arr[0][1]]; for(int i=1;i<arr.length;i++){ for(int j=0;j<arr[0].length;j++){ if(j==0) { row = arr[i][j]; } if(j==1){ col=arr[i][j]; } if(j==2){ temp=arr[i][j]; } } array[row][col]=temp; } return array; }}