go陣列轉換為稀疏陣列
阿新 • • 發佈:2021-10-03
package main import "fmt" type Node struct { Row int Col int Value int } // 稀疏陣列 func main() { ToSparse() } // ToSparse 陣列轉換為稀疏陣列 func ToSparse() []Node { const row = 11 const col = 11 // 1 建立一個原始陣列 1 黑子 2 藍子 var chessMap [row][col]int chessMap[1][2] = 1 chessMap[2][3] = 2 // 2 輸出檢視原始資料 for _, v := range chessMap { fmt.Println(v) } // 3 轉為稀疏陣列 // 遍歷chessMap 發現一個元素的值!=0 建立一個node結構體 // 將其放入到切片中 var sparseArr []Node // 加入規模 標準的稀疏陣列 含有 行數 列數 node0 := Node{ Row: row, Col: col, Value: 0, } sparseArr= append(sparseArr, node0) for i, v := range chessMap { for j, v2 := range v { if v2 != 0 { // 建立一個節點 var node = Node{ Row: i, Col: j, Value: v2, } sparseArr= append(sparseArr, node) } } } // 4 輸出檢視原始資料 for _, node := range sparseArr { fmt.Printf("%d %d %d \n",node.Row, node.Col, node.Value) } return sparseArr }
結果
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0 0 0 0]
[0 0 0 2 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0]
11 11 0
1 2 1
2 3 2