稀疏数组
public static void main(String[] args) {
int[][] nums = new int[10][11];
nums[1][2] = 1;
nums[2][3] = 2;
nums[5][5] = 6;
System.out.println("原数组:");
PrintArray(nums);
System.out.println("稀疏数组:");
PrintArray(BuildArray(nums));
PrintArray(RebuildArray(BuildArray(nums)));
}
public static void PrintArray(int[][] Array){
for (int[] ints : Array) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("=============");
}
//生成稀疏数组
public static int[][] BuildArray(int[][] nums){
//取得有效值
int sum = 0;
for (int[] num : nums) {
for (int i : num) {
if(i != 0){
sum++;
}
}
}
//开始建立稀疏数组
int[][] nums1 = new int[sum+1][3];
nums1[0][0] = nums.length;
nums1[0][1] = nums[0].length;
nums1[0][2] = sum;
//将有效数据放入稀疏数组
int count =1;
for (int i = 0 ; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
if(nums[i][j] != 0){
nums1[count][0] = i;
nums1[count][1] = j;
nums1[count][2] = nums[i][j];
count++;
}
}
}
return nums1;
}
//已知稀疏数组逆向求出原数组
public static int[][] RebuildArray(int[][] Array){
int[][] num = new int[Array[0][0]][Array[0][1]];
for (