📜  删除重复项的 Golang 程序,忽略顺序

📅  最后修改于: 2021-10-25 02:11:05             🧑  作者: Mango

Golang 中,当我们想要删除不考虑任何特定顺序作为初始值的重复项时,我们使用 Go lang 中的Mapping 。首先遍历循环并将数组中的每个元素映射到布尔数据类型。 Go 提供了一个内置的映射类型来实现哈希表。

示例:在此示例中,我们将字符串数据类型映射到 int 数据类型,即每个字符串值都与整数值相关联

让我们一行一行地理解程序:

package main
import "fmt"

包 fmt 使用类似于 C 的 printf 和 scanf 的函数实现格式化的 I/O。

func unique(arr []int) []int {

我们定义的函数定义用于删除带有参数的重复元素作为输入数组 ‘arr’ 并返回类型为 ‘[ ]int’ 的数组

result:=[]int{}
encountered := map[int]bool{}

创建将存储所有唯一元素的数组结果。’encountered’ 将整数变量的映射值存储为布尔数据类型。

for v:= range arr {
        encountered[arr[v]] = true
    }

遍历循环,对于出现在 ‘arr’ 中的每个元素,我们将其设置为 True。多次出现的元素具有相同的散列(或映射)值。

for key, _ := range encountered {
        result = append(result, key)
    }
    return result
}

然后我们遍历映射数组中存在的键和值对。然后我们将它附加到结果数组中存储唯一值的键元素。

func main() {
    array1 := []int{1, 5, 3, 4, 1, 6, 6, 6, 8, 7, 13, 5}
    fmt.Println(array1) 
    unique_items := unique(array1)
    fmt.Println(unique_items)
}

在函数main 中,我们用一些重复的元素初始化一个整数数组。我们在调用 unique()函数后打印初始数组和更新后的数组。这给了我们独特的元素,忽略任何特定的顺序。

Go
package main
  
import "fmt"
  
func unique(arr []int) []int {
    result := []int{}
    encountered := map[int]bool{}
  
    // Create a map of all unique elements.
    for v := range arr {
        encountered[arr[v]] = true
    }
  
    // Place all unique keys from 
    // the map into the results array.
    for key, _ := range encountered {
        result = append(result, key)
    }
    return result
}
  
func main() {
    array1 := []int{2, 4, 5, 7, 2, 3, 4,
             7, 7, 12, 5, 11, 11, 1, 13}
    fmt.Println(array1)
    unique_items := unique(array1)
    fmt.Println(unique_items)
}


输出:

[2 4 5 7 2 3 4 7 7 12 5 11 11 1 13]
[11 1 13 2 4 5 7 3 12]