• 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}]
    }
    

      

  • 相关阅读:
    ASP.NET MVC IIS7 403.14-Forbidden
    SQL Server 查询锁表和接锁表
    一款不错的golang配置文件库
    某奇艺滑块
    爬虫系列
    Docker部署Python爬虫项目
    Cmder
    Selenium处理alert/confirm/prompt提示框
    Django2.0使用
    排序
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/14426506.html
Copyright © 2020-2023  润新知