如何将二维数组中的值与 GoLang 中的一维数组中的值进行比较?
Posted
技术标签:
【中文标题】如何将二维数组中的值与 GoLang 中的一维数组中的值进行比较?【英文标题】:How can I compare values in 2D array with values in 1D array in GoLang? 【发布时间】:2021-02-13 04:34:06 【问题描述】:我需要比较一维数组和二维数组的值,并使用 Go 返回具有相似值的结果数组:
func absolutePermutation(n int32, k int32) []int32
var position []int32
var i, j int32
var result []int32
for i = 1; i <= n; i++
position[i-1] = i
x := getPermutations(position)
resVal := permNum(n)
fmt.Println(x)
for i = 0; i < resVal; i++
for j = 0; j < 4; j++
fmt.Println(x[i][j])
**if int32(math.Abs(float64(position[(j*resVal)+i])-float64(x[i][j]))) == k**
result[i] = x[i][j]
else
continue
return result
func getPermutations(elements []int32) [][]int32
permutations := [][]int32
if len(elements) == 1
permutations = [][]int32elements
return permutations
for i := range elements
el := make([]int32, len(elements))
copy(el, elements)
for _, perm := range getPermutations(append(el[0:i], el[i+1:]...))
permutations = append(permutations, append([]int32elements[i], perm...))
return permutations
func permNum (n int32) int32
if n == 0
return 1
return n * permNum(n-1)
我尝试创建位置(此处将一维数组转换为二维数组。)但它没有意义。 作为 GoLang 的新手,我在这段代码中遇到了这个错误,该代码是为了获取给定数字的排列而编写的:
运行时错误:索引超出范围 [0],长度为 0
【问题讨论】:
【参考方案1】:我在一定程度上解决了。你可以参考这个。
func absolutePermutation(n int32, k int32) []int32
var buffer [1024 * 1024]int32
position := buffer[0:n]
result := make([]int32, n)
var i, j int32
for i = 1; i <= n; i++
position[i-1] = i
x := getPermutations(position)
for i = 0; i < permNum(n); i++
for j = 0; j < n; j++
if int32(math.Abs(float64(position[j])-float64(x[i][j]))) == k
result[j] = x[i][j]
if j==n-1
return result
else
break
result = nil
return result
【讨论】:
以上是关于如何将二维数组中的值与 GoLang 中的一维数组中的值进行比较?的主要内容,如果未能解决你的问题,请参考以下文章