Go-稀疏数组
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-稀疏数组的更多相关文章
- new Array(n) 的坑 密集数组和稀疏数组
今天写Vue时遇到一个奇怪问题,需要监控网页上的input 是否都有值 // var blanks = new Array(number); // blanks的监控属性 var emptyNumbe ...
- javascript中的稀疏数组(sparse array)和密集数组
学习underscore.js数组相关API的时候.遇到了sparse array这个东西,曾经没有接触过. 这里学习下什么是稀疏数组和密集数组. 什么是密集数组呢?在java和C语言中,数组是一片连 ...
- SparseArray HashMap 稀疏数组 二分法
简介 HashMap是java里比较常用的一个集合类,我们常用其来缓存一些处理后的结果,但是在Android项目中,Eclipse却给出了一个 performance 警告.意思就是说用SparseA ...
- [undefined,1] 和 [,1]的区别在哪里--认识js中的稀疏数组
事情是这样的 今天我想写一个能快速生成一个自然数数组的函数,就是[0,1,2,3]这样的,然后我写了下面的代码: new Array(10).map((item, index) => { ret ...
- 读lodash源码之从slice看稀疏数组与密集数组
卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭. --北岛<回答> 看北岛就是从这两句诗开始的,高尚者已死,只剩卑鄙者在世间横行. 本文为读 lodash 源码的第一篇,后续文章会更新到这个仓 ...
- js中的稀疏数组和密集数组
原文地址: http://www.2ality.com/2012/06/dense-arrays.html 一般来说JavaScript中的数组都是稀疏的,也就是说数组中的元素与元素之间是由空格的,因 ...
- 理解JS里的稀疏数组与密集数组
一般来说,JavaScript中的数组是稀疏的. 什么是稀疏呢?稀疏也就是说,数组中的元素之间可以有空隙,因为一个数组其实就是一个键值映射.本文解释了如何创建稀疏数组和不稀疏的数组. 1.稀疏数组 创 ...
- js里的稀疏数组
今天在逛掘金网站的时候,在一篇文章里学到一个新名字,稀疏数组,特此记录一下. 稀疏数组就是包含从0开始的不连续索引的数组.也就是说数组中大部分的内容值都未被使用(或都为零). var arr = ne ...
- 稀疏数组 python描述
什么是稀疏矩阵? 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵. 作用: 在这种情况下,很多0值无疑是很浪费空间的,当我们要把数组存储在磁盘中 ...
- 数据结构与算法之java语言实现(一):稀疏数组
一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白, ...
随机推荐
- Unity无法显示animator面板,如何解决?
步骤: 点击动画的主体: 右侧Inspector面板找到Animator,双击Controller中的对象: 左上角即可显示animator面板. 总结: 不行就双击!!!!!!!!!!!!!!!!! ...
- Android移动、缩放和旋转手势实现
Android的部分图片编辑应用中需要对图片进行移动.缩放和旋转,这些变化都依赖于触摸手势实现,而本文主要阐述移动.缩放和旋转手势的简单实现. 一.移动 首先需要从触摸事件(MotionEvent)中 ...
- Pikachu漏洞靶场 XSS(跨站脚本攻击)
XSS 关于xss的我也是一知半解,所以只放出payload来. 反射型xss(get) 修改maxlength属性之后提交如下内容: <script>alert(/xss/);</ ...
- OpenCV计算机视觉学习(15)——浅谈图像处理的饱和运算和取模运算
如果需要其他图像处理的文章及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractic ...
- 跑AI大模型的K8s与普通K8s有什么不同?
本文分享自华为云社区<跑AI大模型的K8s与普通K8s有什么不同?>,作者:tsjsdbd. 得益于AI开始火的时候,云原生体系已经普及,所以当前绝大多数的AI底层都是基于Kubernet ...
- 云原生批量计算引擎 Volcano社区v1.8.0版本正式发布
本文分享自华为云社区<云原生批量计算引擎 Volcano社区v1.8.0版本正式发布>,作者: 云容器大未来. 北京时间2023年8月17日,Volcano 社区 v1.8.0 版本正式发 ...
- 昇腾实战丨DVPP媒体数据处理图片解码问题案例
摘要:本期就分享几个关于DVPP图片解码问题的典型案例,并给出原因分析及解决方法. 本文分享自华为云社区<DVPP媒体数据处理图片解码问题案例>,作者:昇腾CANN . DVPP(Digi ...
- 数仓安全测试之SSRF漏洞
摘要:SSRF (Server-Side Request Forgery,服务器端请求伪造)是指由攻击者构造请求,然后利用服务器的漏洞以服务端的身份向内网发送请求对内网发起攻击. 本文分享自华为云社区 ...
- 基于GaussDB(DWS)的全文检索特性,了解一下?
摘要:全文检索是在互联网场景下应用非常广泛的特性,搜索引擎.站内搜索.电商搜索等场景下都会使用到,GaussDB(DWS)同样也支持全文检索功能,是基于GIN索引实现的,下面给大家详细介绍一下Gaus ...
- 详解物联网Modbus通讯协议
摘要:Modbus是当前非常流行的一种通讯协议. 本文分享自华为云社区<一文搞懂物联网Modbus通讯协议丨[拜托了,物联网!]>,作者: jackwangcumt. 1 概述 随着IT技 ...