1. 程式人生 > 實用技巧 >力扣 - 447. 迴旋鏢的數量

力扣 - 447. 迴旋鏢的數量

稀疏陣列介紹

  • 陣列中大部分元素為0,或為同一值陣列,可以使用稀疏陣列來儲存該陣列。

  • 處理方式

    • 記錄陣列一共有幾行幾列,幾個不同值

    • 把不同值的元素和行列及值記錄在一個小規模陣列中來縮小程式規模

測試程式碼:

package com.chenhao.method;
import java.util.Arrays;
public class Demo10 {
public static void main(String[] args) {
//建立二維陣列
System.out.println("建立輸出二維陣列:");
int[][] array1 = new int[11][11];
array1 [1][2] = 1;
array1 [2][3] = 2;int sum = 0;
for (int i = 0; i < array1.length ; i++) {
for (int j = 0; j < array1[i].length ; j++) {
System.out.print(array1[i][j] + " ");
if (array1[i][j]!=0){
sum++;
}
}
System.out.println();
}
System.out.println("===========================");
System.out.println("記錄稀疏陣列:");
int[][] array2 = new int[sum+1][3];
int cont = 0;
array2[0][0] = array1.length;
array2[0][1] = array1[1].length;
array2[0][2] = sum;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j]!=0){
cont++;
array2[cont][0]=i;array2[cont][1]=j;array2[cont][2]=array1[i][j];
}
}
}
for (int i = 0; i < array2.length ; i++) {
for (int j = 0; j <array2[i].length ; j++) {
System.out.print(array2[i][j]+"\t");
}
System.out.println();
}
System.out.println("===========================");
System.out.println("還原陣列:");
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for (int i = 1; i < array2.length; i++) {
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
for (int i = 0; i < array3.length; i++) {
for (int j = 0; j < array3[i].length; j++) {
System.out.print(array3[i][j]+" ");
}
System.out.println();
}

}
}