package main

import "fmt"

// 稀疏数组
// 1. 二维数组
// 2. 存在大量相同相同数据和少量不同数据
// 思维: 将大量相同数据转化为: (数据: 频率 或 位置) 的数据格式以简化稀疏数组的存储 // ValNode 值节点,包含行、列、值
type ValNode struct {
Row int
Col int
Val int
} func main() {
// 1. 初始化原始数据
var chess [11][11]int
chess[1][1] = 1
chess[2][2] = 2 // 2. 遍历这个二维数据
for _, v := range chess {
for _, v2 := range v {
fmt.Printf("%v ", v2)
}
fmt.Println()
}
//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 0 // 3.转化为稀疏数组
// 分析得知: 原始数组 chess 是11行11列的数据,大量重复原始是0,少量不重复元素是1 2
var spareArray []ValNode
// 1. 添加第一个元素,包含原始数组的行、列、大量数据的值
rootValNode := ValNode{
Row: 11,
Col: 11,
Val: 0,
}
spareArray = append(spareArray, rootValNode)
// 2. 遍历二维数组,进行转换
for row, v := range chess {
for col, v2 := range v {
if v2 != 0 {
valNode := ValNode{
Row: row,
Col: col,
Val: v2,
}
spareArray = append(spareArray, valNode)
}
}
}
// 3. 输出最后的稀疏数组值
fmt.Println(spareArray)
// [{11 11 0} {1 1 1} {2 2 2}]
}

  

Go-稀疏数组的更多相关文章

  1. new Array(n) 的坑 密集数组和稀疏数组

    今天写Vue时遇到一个奇怪问题,需要监控网页上的input 是否都有值 // var blanks = new Array(number); // blanks的监控属性 var emptyNumbe ...

  2. javascript中的稀疏数组(sparse array)和密集数组

    学习underscore.js数组相关API的时候.遇到了sparse array这个东西,曾经没有接触过. 这里学习下什么是稀疏数组和密集数组. 什么是密集数组呢?在java和C语言中,数组是一片连 ...

  3. SparseArray HashMap 稀疏数组 二分法

    简介 HashMap是java里比较常用的一个集合类,我们常用其来缓存一些处理后的结果,但是在Android项目中,Eclipse却给出了一个 performance 警告.意思就是说用SparseA ...

  4. [undefined,1] 和 [,1]的区别在哪里--认识js中的稀疏数组

    事情是这样的 今天我想写一个能快速生成一个自然数数组的函数,就是[0,1,2,3]这样的,然后我写了下面的代码: new Array(10).map((item, index) => { ret ...

  5. 读lodash源码之从slice看稀疏数组与密集数组

    卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭. --北岛<回答> 看北岛就是从这两句诗开始的,高尚者已死,只剩卑鄙者在世间横行. 本文为读 lodash 源码的第一篇,后续文章会更新到这个仓 ...

  6. js中的稀疏数组和密集数组

    原文地址: http://www.2ality.com/2012/06/dense-arrays.html 一般来说JavaScript中的数组都是稀疏的,也就是说数组中的元素与元素之间是由空格的,因 ...

  7. 理解JS里的稀疏数组与密集数组

    一般来说,JavaScript中的数组是稀疏的. 什么是稀疏呢?稀疏也就是说,数组中的元素之间可以有空隙,因为一个数组其实就是一个键值映射.本文解释了如何创建稀疏数组和不稀疏的数组. 1.稀疏数组 创 ...

  8. js里的稀疏数组

    今天在逛掘金网站的时候,在一篇文章里学到一个新名字,稀疏数组,特此记录一下. 稀疏数组就是包含从0开始的不连续索引的数组.也就是说数组中大部分的内容值都未被使用(或都为零). var arr = ne ...

  9. 稀疏数组 python描述

    什么是稀疏矩阵? 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵. 作用: 在这种情况下,很多0值无疑是很浪费空间的,当我们要把数组存储在磁盘中 ...

  10. 数据结构与算法之java语言实现(一):稀疏数组

    一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白, ...

随机推荐

  1. 23年底,我出齐了Spring boot,Spring cloud和案例方面的书,正在写一本面试书(代年终总结)

    年末了,再来总结一下吧,希望本人明年的年终总结文还能在博客园发. 这次总结的主题是本人出的java书.这几年本人出了不少书,其中有python.redis和Java方面的. 姑且不说其它,java方面 ...

  2. ElasticSearch之Analyze index disk usage API

    本API用于分析.统计指定index当前占用的存储空间. 考虑到本特性目前仍然处于预览状态,因此使用方法.参数等可能会发生变化,或者未来也许会被删除. 本API暂时不建议在生产系统中使用. 命令样例如 ...

  3. 春秋云镜 - CVE-2022-29464

    WSO2文件上传漏洞(CVE-2022-29464)是Orange Tsai发现的WSO2上的严重漏洞.该漏洞是一种未经身份验证的无限制任意文件上传,允许未经身份验证的攻击者通过上传恶意JSP文件在W ...

  4. CSS之动画

    一.动画 动画类型 CSS3 可以创建动画,它可以取代许多网页动画图像.Flash 动画和 JavaScript 实现的效果. transform属性可以定义一些主要的动画属性, translate: ...

  5. Langchain-Chatchat项目:3-Langchain计算器工具Agent思路和实现

      本文主要讨论Langchain-Chatchat项目中自定义Agent问答的思路和实现.以"计算器工具"为例,简单理解就是通过LLM识别应该使用的工具类型,然后交给相应的工具( ...

  6. 2021平(jia)凡(ban)的一年

    0x00 刚刚把<平凡的世界>电视剧看完.也不知道什么原因,又去刷了一遍, 可能是有那么一段时间比较迷茫.加班加到怀疑人生了吧. 记得当年第一次看这本小说还是17年,好像是为了借一本什么书 ...

  7. AI辅助宫颈癌筛查技术全球居首,守护者的力量来源是?

    宫颈癌,是常见的妇科恶性肿瘤.宫颈癌发病率在妇科恶性肿瘤中仅次于乳腺癌,但同时也是医学界公认的病因明确,预防有疫苗.且早期治愈率高的病症!病理形态学诊断被医学界公认为疾病诊断的"金标准&qu ...

  8. 火山引擎DataTester:如何使用A/B测试优化全域营销效果

      当前,营销技术步入了全渠道.全周期的全域时代,随着广泛的数据积累,数据科学技术在营销领域发挥着越来越重要的作用,从消费者人群洞察到智能化信息广告投放,营销的提效让企业得以在转化的每个环节提升影响力 ...

  9. Python 读取图片 转 base64 并生成 JSON

    Python 读取图片 转 base64 并生成 JSON import json import base64 img_path = r'D:\OpenSource\PaddlePaddle\Padd ...

  10. Exception: HOUR_OF_DAY: 0 -> 1

    解决方案 将mysql链接中配置的 serverTimezone=Asia/Shanghai 改为 serverTimezone=GMT%2B8 Asia/Shanghai与GMT-8的区别 开发和运 ...