Golang 找出兩個slice中的不同元素。
例如有兩個slice {"a", "b"}
、{"b", "c"}
,找出兩個slice中不同的元數即a, c
。
範例
package main
import "fmt"
func main() {
s1 := []string{"a", "b"}
s2 := []string{"b", "c"}
fmt.Print(diff(s1, s2)) // [a c]
}
func diff(s1, s2 []string) (res []string) {
m2 := toMap(s2)
for _, v := range s1 {
if !m2[v] {
res = append(res, v)
}
}
m1 := toMap(s1)
for _, v := range s2 {
if !m1[v] {
res = append(res, v)
}
}
return res
}
func toMap(s []string) map[string]bool {
m := make(map[string]bool)
for _, v := range s {
m[v] = true
}
return m
}
時間複雜度應為O(N)
。
空間複雜度應為O(N)
。
測試
執行印出以下。
[a c]
沒有留言:
張貼留言