golang两个[]int求交集
时间: 2023-11-13 07:06:00 浏览: 35
可以通过使用 map 和双指针的方式来求两个 int 数组的交集,具体实现可以参考以下代码:
```go
func intersect(nums1 []int, nums2 []int) []int {
m := make(map[int]int)
var res []int
for _, num := range nums1 {
m[num]++
}
for _, num := range nums2 {
if m[num] > 0 {
res = append(res, num)
m[num]--
}
}
return res
}
```
首先遍历第一个数组,将每个元素出现的次数存储在 map 中;然后遍历第二个数组,如果当前元素在 map 中出现的次数大于 0,则将其加入结果集中,并将该元素在 map 中的出现次数减 1。最后返回结果集即可。
相关问题
golang两个string类型的切片求交集
可以使用map实现,遍历一个切片,将其中的元素作为键存入map中,然后遍历另一个切片,如果元素在map中存在,则说明是交集中的元素。
示例代码:
```go
func intersection(s1, s2 []string) []string {
m := make(map[string]bool)
for _, v := range s1 {
m[v] = true
}
var res []string
for _, v := range s2 {
if m[v] {
res = append(res, v)
}
}
return res
}
```
使用方法:
```go
s1 := []string{"a", "b", "c"}
s2 := []string{"b", "c", "d"}
res := intersection(s1, s2)
fmt.Println(res) // 输出 [b c]
```
golang 写一段两数组求交集的代码
以下是 Golang 中求两数组交集的代码例子: package main import "fmt" func main(){
a := []int{1,2,3,4,5}
b := []int{3,4,5,6,7}
c := []int{} for _,v := range a{
for _,w := range b{
if v == w {
c = append(c, v)
}
}
} fmt.Println(c)
}