- 目錄 -
稀疏數組
尚硅谷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

此篇文章的評論功能已經停用。