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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從兩個(gè)數(shù)組/切片中獲取交集和排除項(xiàng)的最有效方法是什么?

從兩個(gè)數(shù)組/切片中獲取交集和排除項(xiàng)的最有效方法是什么?

Go
小怪獸愛(ài)吃肉 2023-03-29 15:26:12
給定兩個(gè)數(shù)組或切片,例如:a := []int{1, 2, 3, 4, 5}b := []int{3, 4, 5, 6, 7, 8, 9}切片可能未排序,順序無(wú)關(guān)緊要。計(jì)算值的最有效方法是什么,這樣您最終得到兩個(gè)切片的公共元素,并且剩余元素存在于一個(gè)而不是另一個(gè),即對(duì)于上面給出的兩個(gè)數(shù)組,返回值將是:common := []int{3, 4, 5}inAButNotB := []int{1, 2}inBButNotA := []int{6, 7, 8, 9}很容易計(jì)算交集,將一個(gè)切片轉(zhuǎn)換為地圖,然后迭代該切片以查看值是否存在。有沒(méi)有辦法在同一個(gè)循環(huán)中計(jì)算其他兩個(gè)值?
查看完整描述

1 回答

?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

O(len(a) + len(b))是有效的。例如,


package main


import (

? ? "fmt"

)


func main() {

? ? a := []int{1, 2, 3, 4, 5}

? ? b := []int{3, 4, 5, 6, 7, 8, 9}

? ? fmt.Println(a)

? ? fmt.Println(b)


? ? m := make(map[int]uint8)

? ? for _, k := range a {

? ? ? ? m[k] |= (1 << 0)

? ? }

? ? for _, k := range b {

? ? ? ? m[k] |= (1 << 1)

? ? }


? ? var inAAndB, inAButNotB, inBButNotA []int

? ? for k, v := range m {

? ? ? ? a := v&(1<<0) != 0

? ? ? ? b := v&(1<<1) != 0

? ? ? ? switch {

? ? ? ? case a && b:

? ? ? ? ? ? inAAndB = append(inAAndB, k)

? ? ? ? case a && !b:

? ? ? ? ? ? inAButNotB = append(inAButNotB, k)

? ? ? ? case !a && b:

? ? ? ? ? ? inBButNotA = append(inBButNotA, k)

? ? ? ? }

? ? }

? ? fmt.Println(inAAndB)

? ? fmt.Println(inAButNotB)

? ? fmt.Println(inBButNotA)

}

游樂(lè)場(chǎng):https://play.golang.org/p/RvGaC9Wfjiv


輸出:


[1 2 3 4 5]

[3 4 5 6 7 8 9]

[3 4 5]

[1 2]

[8 6 7 9]

Go 編程語(yǔ)言規(guī)范

&? ? bitwise AND? ? ? ? ? ? integers

|? ? bitwise OR? ? ? ? ? ? ?integers

^? ? bitwise XOR? ? ? ? ? ? integers

&^? ?bit clear (AND NOT)? ? integers


<<? ?left shift? ? ? ? ? ? ?integer << unsigned integer

>>? ?right shift? ? ? ? ? ? integer >> unsigned integer

我們有 8 位用于uint8. Bit 0 ( 1 << 0, 1 shift left 0) isa和 bit 1 ( 1 << 1; 1 shift left 1) is b。對(duì)于uint8位,00000001是a,00000010是b,00000011是a和b,并且00000000是 nether anor b。操作員|設(shè)置位,&操作員讀取位。

Go 編程語(yǔ)言規(guī)范

地圖類型

映射是一種類型的無(wú)序元素組,稱為元素類型,由一組另一種類型的唯一鍵索引,稱為鍵類型。

必須為鍵類型的操作數(shù)完全定義比較運(yùn)算符 == 和 !=;因此鍵類型不能是函數(shù)、映射或切片。如果鍵類型是接口類型,則必須為動(dòng)態(tài)鍵值定義這些比較運(yùn)算符;失敗將導(dǎo)致運(yùn)行時(shí)恐慌。

該算法適用于其元素可以是映射鍵的任何切片類型。必須為鍵類型的操作數(shù)完全定義比較運(yùn)算符 == 和 !=。


查看完整回答
反對(duì) 回復(fù) 2023-03-29
  • 1 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)