数据结构:稀疏数组
数据结构 大约 2408 字定义
稀疏固定有3
列。
第一行为记录二维数组信息:第一行第一个元素为二维数组的行,第一行第二个元素为二维数组的列,第一行第三个元素为二维数组的非0
个数。
第二行开始为二维数组的坐标信息,即:第一个元素记录第几行,第二个元素记录第几列,第三个元素记录数值为多少。
二维数组
0 10 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 20 0 0 0 0 0 0 0
0 0 0 0 30 0 0 0 0 0 0
0 0 0 0 0 40 0 0 0 0 0
0 0 0 0 0 0 50 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
--------------------------
稀疏数组
11 11 5
0 1 10
2 3 20
3 4 30
4 5 40
5 6 50
二维数组转稀疏数组
func main() {
// Two-dimensional array
var tda [11][11]int
tda[0][1] = 10
tda[2][3] = 20
// 保存非0个数
count := 0
for _, arr := range tda {
for _, value := range arr {
fmt.Printf("%d\t", value)
if value > 0 {
count++
}
}
fmt.Println()
}
fmt.Println("--------------------------")
// 初始化稀疏数组
var sparseArray = make([][3]int, count+1)
sparseArray[0][0] = len(tda)
sparseArray[0][1] = len(tda[0])
sparseArray[0][2] = count
// 记录稀疏数组行数
index := 0
for row, arr := range tda {
for column, value := range arr {
if value > 0 {
index++ // 从第二行开始记录具体的非0值的坐标
sparseArray[index][0] = row
sparseArray[index][1] = column
sparseArray[index][2] = value
}
}
}
// 打印稀疏数组
for _, array := range sparseArray {
for _, value := range array {
fmt.Printf("%d\t", value)
}
fmt.Println()
}
}
稀疏数组转二维数组
func main() {
// 根据稀疏数组第一行第一个元素初始化二维数组的行
// Golang无法使用 make([][sparseArray[0][1]]int, ...)
tda2 := make([][]int, sparseArray[0][0])
// 初始化二维数组
for i := range tda2 {
tda2[i] = make([]int, sparseArray[0][1])
}
for row, array := range sparseArray {
// 第一行保存的是二维数组的行和列以及非0的个数,跳过
if row > 0 {
tda2[array[0]][array[1]] = array[2]
}
}
// 打印输出
for _, array := range tda2 {
for _, value := range array {
fmt.Printf("%d\t", value)
}
fmt.Println()
}
}
阅读 1014 · 发布于 2021-01-17
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Android dp,sp 与 px 转换阅读 5736
-
Chrome 设置 HTTP 网站允许开启麦克风阅读 65
-
Go JSON 的序列化和反序列化阅读 3724
-
Nginx 解决前端 CORS 跨域问题阅读 9888
-
屏蔽 Sonar 告警阅读 433
-
Linux 分析 PHP 进程内存占用阅读 2084
-
IDEA 去除 Unchecked cast from Object to 提示阅读 3662
-
Spring Boot 统一修改 Controller 返回值阅读 959
-
Windows 网络适配器显示:网络管理员已经禁用了 Internet 连接共享阅读 3180
-
Java ObjectMapper 格式化输出 JSON阅读 5807