1. 程式人生 > 其它 >go陣列轉換為稀疏陣列

go陣列轉換為稀疏陣列

package main

import "fmt"

type Node struct {
    Row   int
    Col   int
    Value int
}

// 稀疏陣列
func main() {

    ToSparse()
}


// ToSparse 陣列轉換為稀疏陣列
func ToSparse() []Node {
    const row = 11
    const col = 11

    // 1 建立一個原始陣列 1 黑子 2 藍子
    var chessMap [row][col]int

    chessMap[1][2] = 1
    chessMap[
2][3] = 2 // 2 輸出檢視原始資料 for _, v := range chessMap { fmt.Println(v) } // 3 轉為稀疏陣列 // 遍歷chessMap 發現一個元素的值!=0 建立一個node結構體 // 將其放入到切片中 var sparseArr []Node // 加入規模 標準的稀疏陣列 含有 行數 列數 node0 := Node{ Row: row, Col: col, Value: 0, } sparseArr
= append(sparseArr, node0) for i, v := range chessMap { for j, v2 := range v { if v2 != 0 { // 建立一個節點 var node = Node{ Row: i, Col: j, Value: v2, } sparseArr
= append(sparseArr, node) } } } // 4 輸出檢視原始資料 for _, node := range sparseArr { fmt.Printf("%d %d %d \n",node.Row, node.Col, node.Value) } return sparseArr }

結果

[0 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]
11 11 0
1 2 1
2 3 2