您的位置 首页 golang

golang实现原始数组向稀疏数组的转化

 package main
import "fmt"

//如果原始数组中元素个数较少,那么存储的话比较浪费空间,因此可以使用稀疏数组的办法解决该问题
//稀疏数组 : 用于节省存储空间

type ValNode struct {
    row int
    col int
    val int
}

func main() {

    //1  原始数组转稀疏数组
    //创建原始数组,棋盘,保存棋盘的棋子数据
    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()
    }

    //转成稀疏数组
    //1 遍历chessMap,如果发现有一个元素的值不为0,创建一个node结构体,
    //2 放入到切片中
    var sparseArr []ValNode
    //注意:标准的稀疏数组还有一个记录元素的二维数组的规模(行和列,默认值),一般放在头部位置
    valNode := ValNode{
        row: 11,
        col: 11,
        val: 0, //默认值
    }
    sparseArr = append(sparseArr, valNode)
    for i, v := range chessMap {
        for j, v2 := range v {
            if v2 != 0 {
                //创建ValNode
                valNode = ValNode{
                    row: i,
                    col: j,
                    val: v2,
                }
                sparseArr = append(sparseArr, valNode)
            }
        }
    }

    //输出稀疏数组
    for i, valNode := range sparseArr {
        fmt.Printf("%d: %d %d %d\n", i, valNode.row, valNode.col, valNode.val)
    }
}  

文章来源:智云一二三科技

文章标题:golang实现原始数组向稀疏数组的转化

文章地址:https://www.zhihuclub.com/88456.shtml

关于作者: 智云科技

热门文章

网站地图