稀疏數組
尚硅谷Golang課
稀疏數組
type ValNode struct {
row int //橫的
col int //直的
val int
}
func main() {
//創建數組範例
var chessMap [11][11]int
chessMap[1][2] = 1
chessMap[2][3] = 2
//輸出看樣子
for _, v := range chessMap {
for _, v2 := range v {
fmt.Printf("%d\t", v2)
}
fmt.Println()
}
//轉成稀疏數組,思路:遍歷他,創造一個結構體,發現有值就放進對應的切片
var sparseArr []ValNode
//紀錄規模跟預設值
valNode0 := ValNode{
row: 11,
col: 11,
val: 0,
}
sparseArr = append(sparseArr, valNode0)
for i, v := range chessMap {
for j, k := range v {
if k != 0 {
valNodeFind := ValNode{
row: i,
col: j,
val: k,
}
sparseArr = append(sparseArr, valNodeFind)
}
}
}
//輸出這個數組看看
for i, valNode := range sparseArr {
fmt.Printf("%d: %d %d %d\n", i, valNode.row, valNode.col, valNode.val)
}
//恢復
var chessMapRe [11][11]int
for i, v := range sparseArr {
if i != 0 { //跳過第一row
chessMapRe[v.row][v.col] = v.val
}
}
//輸出看樣子
for _, v := range chessMapRe {
for _, v2 := range v {
fmt.Printf("%d\t", v2)
}
fmt.Println()
}
}
上次修改於 2021-09-01
此篇文章的評論功能已經停用。