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

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

將切片元素替換為最后一個元素

將切片元素替換為最后一個元素

Go
LEATH 2022-07-11 14:33:03
我的問題是答案應(yīng)該有 [1 1 2 2],但它得到了 [1 1 2 3]。我調(diào)試了這段代碼,發(fā)現(xiàn)在那個循環(huán)中,首先將 [1 1 2 2] 附加到數(shù)組中,但在下一個循環(huán)中它更改為 [1 1 2 3]。我不明白為什么,以“D”開頭的日志,這個數(shù)組中的元素在下一個循環(huán)中發(fā)生了變化。這是我的代碼: https: //play.golang.org/p/X_CU8GlMOqfpackage mainimport (    "fmt")func main() {    nums := []int{1, 1, 2, 2, 3}    result := subsetsWithDup(nums)    fmt.Println(result)}func subsetsWithDup(nums []int) [][]int {    result := [][]int{{}, nums}    for i := 0; i < len(nums); i++ {        if i > 0 && nums[i] == nums[i-1] {            continue        }        for j := 1; j < len(nums); j++ {            result = append(result, dsf(nums, []int{nums[i]}, i+1, j)...)        }    }    return result}func dsf(nums []int, set []int, start int, length int) [][]int {    result := [][]int{}    if len(set) == length {        return append(result, set)    }    for i := start; i < len(nums); i++ {        if i != start && nums[i] == nums[i-1] {            continue        }        if len(set) == 3 {            fmt.Printf("A %v %p\n", result, &result)        }        tmp := set[:]        tmp = append(tmp, nums[i])        if len(set) == 3 {            fmt.Printf("B %v %p %v %p\n", tmp, &tmp, result, &result)        }        result = append(result, dsf(nums, tmp, i+1, length)...)        if len(tmp) == 4 {            fmt.Printf("C %v %p %v %p\n", tmp, &tmp, result, &result)            for _, r := range result {                fmt.Printf("D %v %p\n", r, &r)            }        }    }    return result}A [] 0xc000004960B [1 1 2 2] 0xc0000049c0 [] 0xc000004960C [1 1 2 2] 0xc0000049c0 [[1 1 2 2]] 0xc000004960D [1 1 2 2] 0xc000004ae0A [[1 1 2 2]] 0xc000004960B [1 1 2 3] 0xc000004b60 [[1 1 2 3]] 0xc000004960C [1 1 2 3] 0xc000004b60 [[1 1 2 3] [1 1 2 3]] 0xc000004960D [1 1 2 3] 0xc000004ca0D [1 1 2 3] 0xc000004ca0A [] 0xc000004da0B [1 2 2 3] 0xc000004de0 [] 0xc000004da0C [1 2 2 3] 0xc000004de0 [[1 2 2 3]] 0xc000004da0D [1 2 2 3] 0xc000004f00
查看完整描述

1 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個贊

您正在嘗試使用以下內(nèi)容復(fù)制切片:

tmp := set[:]

這不會復(fù)制切片,它會重新使用原始切片。它具有與 相同的效果tmp := set。您可以使用:

tmp := append([]int(nil), set...)

如果你喜歡。 是您的程序進(jìn)行了此更改,并且所有額外的調(diào)試都已注釋掉。


查看完整回答
反對 回復(fù) 2022-07-11
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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