溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

go語(yǔ)言中實(shí)現(xiàn)slice去重的方法

發(fā)布時(shí)間:2020-06-10 10:50:23 來(lái)源:億速云 閱讀:2444 作者:Leah 欄目:編程語(yǔ)言

本文以go語(yǔ)言中的slice為例,為大家分析go語(yǔ)言中實(shí)現(xiàn)slice去重的方法。閱讀完整文相信大家對(duì)go語(yǔ)言中實(shí)現(xiàn)slice去重的方法有了一定的認(rèn)識(shí)。

合并兩個(gè)整型slice,返回沒(méi)有重復(fù)元素的切片,有兩種去重策略

1. 通過(guò)雙重循環(huán)來(lái)過(guò)濾重復(fù)元素(時(shí)間換空間)

// 通過(guò)兩重循環(huán)過(guò)濾重復(fù)元素
func RemoveRepByLoop(slc []int) []int {
    result := []int{}  // 存放結(jié)果
    for i := range slc{
        flag := true
        for j := range result{
            if slc[i] == result[j] {
                flag = false  // 存在重復(fù)元素,標(biāo)識(shí)為false
                break
            }
        }
        if flag {  // 標(biāo)識(shí)為false,不添加進(jìn)結(jié)果
            result = append(result, slc[i])
        }
    }
    return result
}

2. 通過(guò)字典來(lái)過(guò)濾(空間換時(shí)間)

因?yàn)樽值涞闹麈I唯一,所以可以用來(lái)判斷元素是否重復(fù)

// 通過(guò)map主鍵唯一的特性過(guò)濾重復(fù)元素
func RemoveRepByMap(slc []int) []int {
    result := []int{}
    tempMap := map[int]byte{}  // 存放不重復(fù)主鍵
    for _, e := range slc{
        l := len(tempMap)
        tempMap[e] = 0
        if len(tempMap) != l{  // 加入map后,map長(zhǎng)度變化,則元素不重復(fù)
            result = append(result, e)
        }
    }
    return result
}

ps : 這里為了節(jié)省內(nèi)存,使用map[int]byte。 因?yàn)閙ap的value并沒(méi)有用到,所以什么類(lèi)型都可以。

以上就是go語(yǔ)言中實(shí)現(xiàn)slice去重的方法介紹,詳細(xì)使用情況還得要大家自己使用過(guò)才能知道具體要領(lǐng)。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI