成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

leetcode78. Subsets

Rocko / 1241人閱讀

摘要:題目要求類似的題目有可以參考這篇博客可以參考這篇博客思路一遞歸還是利用遞歸的方式,在前一種情況的基礎(chǔ)上遍歷下一輪的組合情況。

題目要求
Given a set of distinct integers, nums, return all possible subsets.

Note: The solution set must not contain duplicate subsets.

For example,
If nums = [1,2,3], a solution is:

[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

類似的題目有:
leetcode60 Permutation Sequence 可以參考這篇博客
leetcode77 Combinations 可以參考這篇博客

思路一:遞歸

還是利用遞歸的方式,在前一種情況的基礎(chǔ)上遍歷下一輪的組合情況。

    public List> subsets(int[] nums) {
        List> result = new ArrayList>();
        result.add(new ArrayList());
        subsets(result, nums, 0, new ArrayList());
        return result;
    }
    
    public void subsets(List> result, int[] nums, int startIndex, List currentList){
        if(startIndex == nums.length){
            return;
        }
        while(startIndex(currentList));
            subsets(result, nums, startIndex, currentList);
            currentList.remove(currentList.size()-1);
        }
    }
思路2:排序后循環(huán)

起始subset集為:[]
添加S0后為:[], [S0]
添加S1后為:[], [S0], [S1], [S0, S1]
添加S2后為:[], [S0], [S1], [S0, S1], [S2], [S0, S2], [S1, S2], [S0, S1, S2]

public List> subsets(int[] S) {
    List> res = new ArrayList<>();
    res.add(new ArrayList());
    
    for(int i : S) {
        List> tmp = new ArrayList<>();
        for(List sub : res) {
            List a = new ArrayList<>(sub);
            a.add(i);
            tmp.add(a);
        }
        res.addAll(tmp);
    }
    return res;
}


想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會(huì)不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67306.html

相關(guān)文章

  • leetcode-78-Subsets

    摘要:描述解釋就是普通的動(dòng)態(tài)規(guī)劃吧,找準(zhǔn)規(guī)律,所有數(shù)字過一遍,每個(gè)數(shù)字都有添加和不被添加兩種情況,所有情況的綜合 描述 Given a set of distinct integers, nums, return all possible subsets(the power set). Note: The solution set must not contain duplicate sub...

    dockerclub 評論0 收藏0
  • Leetcode78. 子集

    摘要:題目給定一組不含重復(fù)元素的整數(shù)數(shù)組,返回該數(shù)組所有可能的子集冪集。說明解集不能包含重復(fù)的子集。示例輸入輸出題解全排列,部分排列這些問題都是回溯的題目。這個(gè)題目每個(gè)狀態(tài)都是解,包括空也是解,所以直接都加進(jìn)去就好。 題目 給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。 說明:解集不能包含重復(fù)的子集。 示例: 輸入: nums = [1,2,3] 輸出: [ ...

    laznrbfe 評論0 收藏0
  • Leetcode78. 子集

    摘要:題目給定一組不含重復(fù)元素的整數(shù)數(shù)組,返回該數(shù)組所有可能的子集冪集。說明解集不能包含重復(fù)的子集。示例輸入輸出題解全排列,部分排列這些問題都是回溯的題目。這個(gè)題目每個(gè)狀態(tài)都是解,包括空也是解,所以直接都加進(jìn)去就好。 題目 給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。 說明:解集不能包含重復(fù)的子集。 示例: 輸入: nums = [1,2,3] 輸出: [ ...

    miqt 評論0 收藏0
  • LeetCode 子集合,排列組合,回文分離等問題的通用遞歸算法

    摘要:通用算法思路總結(jié)初始結(jié)果列表??赡芤獙?shù)集排序,方便處理重復(fù)元素的情況。書寫遞歸函數(shù),先要考慮原點(diǎn)狀況,一般就是考慮什么情況下要將當(dāng)前結(jié)果添加到結(jié)果列表中。每當(dāng)一個(gè)元素添加到當(dāng)前結(jié)果中之后,要再調(diào)用遞歸函數(shù),相當(dāng)于固定了前綴窮舉后面的變化。 通用算法思路總結(jié): 初始結(jié)果列表。 可能要將數(shù)集排序,方便處理重復(fù)元素的情況。 調(diào)用遞歸函數(shù)。 書寫遞歸函數(shù),先要考慮原點(diǎn)狀況,一般就是考慮什么...

    cfanr 評論0 收藏0
  • LeetCode 關(guān)于回溯問題的看法

    摘要:回溯算法在算法過程中就是類似于枚舉算法,嘗試在搜索過程中找到問題的解。 回溯算法( BackTrack )在算法過程中就是類似于枚舉算法,嘗試在搜索過程中找到問題的解。 使用回溯算法解題的一般步驟 使用回溯算法解題的一般步驟: 針對所給問題得出一般的解空間 用回溯搜索方法搜索解空間 使用深度優(yōu)先去搜索所有解并包含適當(dāng)?shù)募糁Σ僮? LeetCode 使用回溯算法的題目主要有 36 題,...

    ASCH 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<