Golang で配列の交差を実装する方法

WBOY
リリース: 2024-04-03 18:09:01
オリジナル
1182 人が閲覧しました

Golang 配列の共通部分を見つけるには 2 つの一般的な方法があります。組み込みの append 関数を使用する方法、ループして要素が別の配列にあるかどうかを判断する方法、および重ね合わせて共通部分を見つける方法です。マップを使用して重複要素を除外し、マッピング テーブルを作成することで交差を効率的に取得します。

Golang 数组求交集的实现方法

Golang の配列交差の実装方法

Golang では、配列の交差を解決する方法がいくつかあります。この記事では、組み込みの append 関数を使用する方法と map を使用する 2 つの最も一般的な方法を紹介します。

方法 1: 組み込みの append 関数を使用します。

append 関数を使用すると、既存の配列に要素を追加できます。新しい配列を作成することも可能です。この機能を使用して交差点を見つけることができます。

func intersection(a, b []int) []int {
    result := []int{}
    for _, v := range a {
        if containsInArray(b, v) {
            result = append(result, v)
        }
    }
    return result
}

func containsInArray(arr []int, elem int) bool {
    for _, v := range arr {
        if v == elem {
            return true
        }
    }
    return false
}
ログイン後にコピー

方法 2: map

交差点を見つけるもう 1 つの方法は、# を使用することです。 # #地図append 関数と比較すると、map を使用すると、O(n) 時間の計算量で重複する要素を除外できるため、より効率的です。

func intersection(a, b []int) []int {
    m := make(map[int]bool)
    for _, v := range a {
        m[v] = true
    }

    result := []int{}
    for _, v := range b {
        if m[v] {
            result = append(result, v)
        }
    }
    return result
}
ログイン後にコピー

実際のケース

次の 2 つの配列があるとします。

a := []int{1, 2, 3, 4, 5, 6}
b := []int{3, 4, 5, 6, 7, 8}
ログイン後にコピー

append 関数を使用して交差部分を見つけます。

intersectionAB := intersection(a, b)
fmt.Println(intersectionAB) // [3 4 5 6]
ログイン後にコピー

Use

map 交差点を見つけます:

intersectionBA := intersection(b, a)
fmt.Println(intersectionBA) // [3 4 5 6]
ログイン後にコピー

以上がGolang で配列の交差を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート