二維陣列和稀疏陣列轉換,圍棋問題解決

2021-10-07 23:16:51 字數 1711 閱讀 5315

最近剛開始學資料結構,學到了二維陣列和稀疏陣列。

二維陣列轉稀疏陣列的思路:

1、遍歷原始的二維陣列,得到有效資料的個數sum

2、根據sum,得知稀疏陣列的sparsearray int[sum+1][3]

3、將二維陣列的有效資料存入稀疏陣列

稀疏陣列轉成原始的二維陣列思路:

1、根據稀疏陣列的第一行資料,得知二維陣列的長度和資料出現次數

2、遍歷 稀疏陣列,根據稀疏陣列的資料放入二維陣列

直接上**

public class sparsearray 

system.out.println();

}//2、獲取資料出現次數

int num = 0;

for (int anint : ints) }}

//3、建立稀疏陣列

int sparsearray = new int[num + 1][3];

sparsearray[0][0] = ints.length;

sparsearray[0][1] = ints.length;

sparsearray[0][2] = num;

// 4、讀取資料,賦值給稀疏陣列

//count 標記有資料的行

int count = 0;

for (int i = 0; i < ints.length; i++) }}

system.out.println("稀疏陣列***************==");

for (int ints2 : sparsearray)

system.out.println();

}// 寫人檔案

filewrite(sparsearray);

int sparsearrays = fileread();

//稀疏陣列 轉二維陣列

int newints =new int[sparsearrays[0][0]][sparsearrays[0][1]];

system.out.println("讀取後稀疏陣列***************==");

for (int i=1;iints1 = new arraylist<>();

while ((line = bufferedreader.readline()) != null)

int ints2 = new int[falg];

for (int i = 0; i < strings.length; i++)

ints1.add(ints2);

}int sparsearr = new int[ints1.size()][falg];

for (int i = 0; i < ints1.size(); i++)

}return sparsearr;

}//讀取稀疏陣列 寫入檔案

public static void filewrite(int sparsearray) throws ioexception

bufferedwriter.write("\n");

}bufferedwriter.flush();

bufferedwriter.close();

filewriter.close();

}

二維陣列轉換為稀疏陣列

二維陣列轉換為稀疏陣列 二維陣列轉換稀疏陣列的思路 1.遍歷原始的二維陣列,得到有效資料的個數sum sum有多少個,稀疏陣列就有sum 1行 2.根據sum的個數建立稀疏陣列sparsearray int sum 1 3 列為固定值,行不確定 3.將二維陣列的有效資料放入稀疏陣列中 0 0 0 1...

稀疏陣列與二維陣列的轉換

稀疏陣列的使用場景 當乙個陣列中大部分元素為0,或者為同乙個值的時候,可以使用稀疏陣列來儲存該陣列。比如這樣乙個陣列,裡面除了1和2之外其餘全為0。比如下面這張圖 左邊二維陣列為6行7列,其中有8個非零的值,所以將 6,7,8 存在第0行 後面開始記錄原二維陣列有效資料的位置,比如有效資料22,其位...

稀疏陣列(與二維陣列互相轉換)

二維陣列的省記憶體的儲存方法,一般是n行3列,三列分別為行,列,值。二維陣列轉稀疏陣列 1.遍歷整個二維陣列,檢視有多少個有效數字 2.根據有效數字的個數,建立稀疏陣列 3.遍歷二維陣列,將有效的數字放入稀疏陣列中稀疏陣列轉二維陣列 1.根據稀疏陣列第一行建立空二維陣列 2.讀取稀疏陣列後幾行資料,...