zoukankan      html  css  js  c++  java
  • 稀疏数组

    package main
    
    import (
    	"fmt"
    	"reflect"
    )
    
    //展示矩阵
    func ShowMatrix(arg interface{}) {
    
    	value := reflect.ValueOf(arg) //反射获得值
    	switch value.Kind() {//变量的类型
    	case reflect.Slice, reflect.Array:
    		rows := value.Len()
    		cols := value.Index(0).Len()
    		for i := 0; i < rows; i++ {
    			for j := 0; j < cols; j++ {
    				fmt.Printf("%v", value.Index(i).Index(j))
    			}
    			fmt.Println()
    		}
    	case reflect.Int:
    		fmt.Println(value)
    		fmt.Println("数字")
    	}
    }
    
    //生成稀疏数组
    func ToSparse(arr [9][9]int) [][3]int {
    	dataCap := 0
    	spareArr := make([][3]int, 1) //切片设计一个容量,下一个步骤才好赋值
    	spareArr[0] = [3]int{9, 9, 0}
    	//spareArr = append(spareArr,[3]int{9, 9, 0}) //append 自动给切片扩容
    	for i, v := range arr {
    		for k, vv := range v {
    			if vv != 0 {
    				dataCap++
    				spareArr = append(spareArr, [3]int{i, k, vv})
    			}
    		}
    	}
    	spareArr[0][2] = dataCap
    	return spareArr
    }
    
    //恢复原始数组
    func ToOrange(spareArr [][3]int) [9][9]int {
    	arr1 := [9][9]int{}
    	//恢复原始数组
    	for i, v := range spareArr {
    		if i != 0 {
    			arr1[v[0]][v[1]] = v[2]
    		}
    	}
    	return arr1
    }
    
    func main() {
    	param1 := [9][9]int{}
    	param1[1][4] = 1
    	param1[4][2] = 2
    	ShowMatrix(param1)
    	//稀疏数组
    	res := ToSparse(param1)
    	fmt.Println(res)
    	////原始数组
    	res1 := ToOrange(res)
    	fmt.Println(res1)
    
    }
    

      

  • 相关阅读:
    android RecyclerView smoothScrollToPosition 每次都能滚动到顶部
    android eventbus四种线程模型
    android代码设置主题无效setTheme
    Word备忘录
    Markdown基本语法
    游戏常用术语
    字体格式
    Excel备忘录
    离线方式快速安装python模块以及相关依赖模块
    kube-proxy
  • 原文地址:https://www.cnblogs.com/zxqblogrecord/p/15478364.html
Copyright © 2011-2022 走看看