• 稀疏数组


    一、概念

      SparseArray 主要用于对数据压缩,就拿一个存储五子棋的游戏来实现

    这个棋盘的格局11×11,默认为0,黑子用1代替,蓝子用2代替,如果直接存储会浪费很多空间。

    通过定义一个对象来存储每一个数据的位置和值,就可以减少存储空间的浪费

    黑子:Row:1   Column:2  Value:1

    蓝子:Row:2   Column:3  Value:3

    二、实现

      这里采用go语言实现

    package main
    
    import "fmt"
    
    type Node struct {
        Row    int
        Column int
        Value  int
    }
    
    //棋盘格局
    const ROW, COLUMN int = 11, 11
    
    func main() {
        //创建一个原始的二维数组
        var dataMap [ROW][COLUMN]int
        dataMap[1][2] = 1
        dataMap[2][3] = 2
    
        //数据存储
        nodes := []Node{
            Node{
                Row:    ROW,
                Column: COLUMN,
                Value:  0,
            },
        }
    
        fmt.Println("打印棋盘数据----------------------------")
        for i, r := range dataMap {
            for j, v := range r {
                fmt.Printf("%d	", v)
                if v != 0 {
                    nodes = append(nodes, Node{
                        Row:    i,
                        Column: j,
                        Value:  v,
                    })
                }
            }
            fmt.Println()
        }
    
        fmt.Println("打印保存数据----------------------------")
        for _, item := range nodes {
            fmt.Printf("%d %d %d
    ", item.Row, item.Column, item.Value)
        }
    
        fmt.Println("打印还原数据----------------------------")
        if len(nodes) == 0 {
            return
        }
        var restoreData [ROW][COLUMN]int
        for _, item := range nodes[1:] {
            restoreData[item.Row][item.Column] = item.Value
        }
        for _, r := range restoreData {
            for _, v := range r {
                fmt.Printf("%d	", v)
            }
            fmt.Println()
        }
    }

    打印输出

  • 相关阅读:
    ES6中的find与filter的区别
    centos7上搭建http服务器以及设置目录访问
    JSON.parse()和JSON.stringify()的用法
    video 在iphone手机的ios系统和微信端无法自动播放
    JavaScript规范----DOM操作
    http与https的区别
    vw vh 的概念
    JS实现数组排序:升序和降序
    用Vue来实现音乐播放器(二十三):音乐列表
    JavaScript对象---递归遍历对象
  • 原文地址:https://www.cnblogs.com/fanxp/p/12100848.html
Copyright © 2020-2023  润新知