AdSense

網頁

2024/4/24

Golang 取得兩個slice之間不同的元素

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]

沒有留言:

AdSense