78.子集

代碼解答


func subsets(nums []int) [][]int {

    var res [][]int

    var temp []int

    //開始回溯 用指針是因?yàn)間olang slice和其他語(yǔ)言數(shù)組有些不一樣,增加長(zhǎng)度時(shí)會(huì)指向新的地址

    dfs(&res,temp,nums,0)

    return res

}

//深度優(yōu)先

func dfs(res *[][]int,temp []int,nums []int,j int){

    tp:=make([]int,len(temp),len(temp))

    //復(fù)制臨時(shí)數(shù)組記錄遍歷節(jié)點(diǎn),避免數(shù)據(jù)混亂

    copy(tp,temp)

    *res=append(*res,tp)

    for i:=j;i<len(nums);i++{

        //遍歷到當(dāng)前節(jié)點(diǎn)

        temp=append(temp,nums[i])

        dfs(res,temp,nums,i+1)

        //回到當(dāng)前節(jié)點(diǎn)的上一節(jié)點(diǎn)

        temp=temp[:len(temp)-1]

    }

}

思路解析

讀題分析應(yīng)該用遞歸,第一個(gè)數(shù)與剩余數(shù)組合,第二個(gè)數(shù)與排除第一個(gè)數(shù)后剩余數(shù)組合...到達(dá)邊界后返回上一節(jié)點(diǎn)繼續(xù)遍歷

以輸入nums = [1,2,3]為例轉(zhuǎn)換為的樹

image

以輸入nums = [1,2,3]為例遍歷到的順序


&[[]]

&[[] [1]]

&[[] [1] [1 2]]

&[[] [1] [1 2] [1 2 3]]

&[[] [1] [1 2] [1 2 3] [1 3]]

&[[] [1] [1 2] [1 2 3] [1 3] [2]]

&[[] [1] [1 2] [1 2 3] [1 3] [2] [2 3]]

&[[] [1] [1 2] [1 2 3] [1 3] [2] [2 3] [3]]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。說明:解集不能包含重復(fù)的子集。 示例: 代碼
    vbuer閱讀 86評(píng)論 0 0
  • 動(dòng)態(tài)規(guī)劃 111. 爬樓梯思路類似斐波那契數(shù)列注意考慮第 0 階的特殊情況 272. 爬樓梯 II思路類似上題,只...
    6默默Welsh閱讀 2,610評(píng)論 0 1
  • 5月8日,“2018首屆愛之鏈電影獎(jiǎng)”在成都金沙劇場(chǎng)隆重揭曉,從曲周走出的青年電影導(dǎo)演劉俊峰的作品《小山的秘密》一...
    邯鄲李治山閱讀 3,310評(píng)論 2 0
  • 即使因?yàn)樽鲎约憾挥憛?,也勝過扭曲自己而被喜歡。 ———蔡康永 與其...
    Leticia多讀書早睡覺閱讀 193評(píng)論 0 0
  • 白飛飛眼波一動(dòng),不答反問:“怎么突然如此心急?” 歐陽(yáng)明日握住白飛飛的手,慢慢道:“洛笙是個(gè)強(qiáng)勁的對(duì)手,我不愿夜長(zhǎng)...
    半盞風(fēng)月閱讀 802評(píng)論 0 0

友情鏈接更多精彩內(nèi)容