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语言实现(一):稀疏数组
一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白, ...
随机推荐
- 9 个让你的 Python 代码更快的小技巧
哈喽大家好,我是咸鱼 我们经常听到 "Python 太慢了","Python 性能不行"这样的观点.但是,只要掌握一些编程技巧,就能大幅提升 Python 的运 ...
- javaGUI入门之swing(一)
javaGUI入门之swing(一) 前面学过javafx,发现他们有"异曲同工"之处,demo写起来也类似,无非是类名不一样.个人觉得实现一个桌面应用不应该只看用一种语言一种框架 ...
- C++产生N以内的随机整数
C++产生N(这里N=100)以内的随机整数的例子: #include <iostream> #include <ctime> using namespace std; int ...
- Istio与Kubernetes:资源管理与协同解析
本文分享自华为云社区<istio资源介绍以及和kubernetes资源扭转关系>,作者:可以交个朋友. 一.istio原理 Istio的原理是拦截 Kubernetes 中创建 Pod 的 ...
- “绝影”机器狗如何利用ModelArts强化学习算法更改导航轨迹
摘要:利用ModelArts平台云端协同进行强化学习AI能力部署,导航机器狗绕开火焰关闭可燃气体开关灭火. 在刚刚结束的HC Keynote中,为大家演示了基于华为ModelArts和Atlas 20 ...
- 华为云Classroom聚焦人才数字化转型,引领智慧教育改革新模式
随着教育行业数字化转型进程加快,利用现代化云端技术手段,线上线下相结合方式建立的全新OMO产教融合一体化已成为行业趋势.华为云Classroom平台沉淀了华为多年研发实践经验和多种前沿技术,以赋能伙伴 ...
- AI论文解读丨融合视觉、语义、关系多模态信息的文档版面分析架构VSR
摘要:文档版式分析任务中,文档的视觉信息.文本信息.各版式部件间的关系信息都对分析过程具有很重要的作用.本文提出一种融合视觉.文本.关系多模态信息的版式分析架构VSR. 本文分享自华为云社区<论 ...
- Mac Maven环境变量配置 zsh: command not found: mvn
之前配过环境变量,但是后来打开还是报 zsh: command not found: mvn 需要在运行前先刷下环境变量 source ~/.bash_profile 每次使用前都刷一下比较麻烦,这是 ...
- Kubernetes(K8S) 配置静态资源服务
Kubernetes(K8S) 配置静态资源服务 --- apiVersion: v1 kind: ConfigMap metadata: name: img-config namespace: vi ...
- Vue 多环境配置
没有使用 package.json 进行配置 ,改配置时不需要重新打包 Vue 多环境配置 package.json settings.js window.environment="dev& ...