第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中使用切片進行子集檢查

在 Go 中使用切片進行子集檢查

Go
白衣非少年 2021-06-15 05:16:06
我正在尋找一種有效的方法來檢查一個切片是否是另一個切片的子集。我可以簡單地遍歷它們進行檢查,但我覺得必須有更好的方法。例如{1, 2, 3} 是 {1, 2, 3, 4}的子集 {1, 2, 2} 不是 {1, 2, 3, 4} 的子集有效地做到這一點的最佳方法是什么?謝謝!
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

如果您的切片已排序,則可以完成這項工作。


package main


import "fmt"


// Subset return whether a is a sublist of b. Both a and b must be (weakly) ascending.

func Subset(a, b []int) bool {

    for len(a) > 0 {

        switch {

        case len(b) == 0:

            return false

        case a[0] == b[0]:

            a = a[1:]

            b = b[1:]

        case a[0] < b[0]:

            return false

        case a[0] > b[0]:

            b = b[1:]

        }

    }

    return true

}


func main() {

    cases := []struct {

        a, b []int

        want bool

    }{

        {[]int{1, 2, 3}, []int{1, 2, 3, 4}, true},

        {[]int{1, 2, 2}, []int{1, 2, 3, 4}, false},

    }

    for _, c := range cases {

        if Subset(c.a, c.b) != c.want {

            fmt.Printf("Subset(%v, %v) = %v, want %v\n", c.a, c.b, Subset(c.a, c.b), c.want)

        }

    }

}


查看完整回答
反對 回復 2021-06-28
  • 2 回答
  • 0 關注
  • 359 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號