国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

leetcode90. Subsets II

PascalXie / 1428人閱讀

摘要:題目要求可以先參考關(guān)于的這篇博客再看接下來的內(nèi)容。思路一鏈表的形式我們可以通過例子,,,來說明。在遞歸中我們會將起始下標(biāo)后的值依次加入當(dāng)前結(jié)果集,并將結(jié)果集加入結(jié)果集數(shù)組中。如果遇到重復(fù)的數(shù)字,則繼續(xù)遍歷下一個(gè)數(shù)字,直至遍歷結(jié)束。

題目要求
Given a collection of integers that might contain duplicates, nums, return all possible subsets.

Note: The solution set must not contain duplicate subsets.

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

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

可以先參考關(guān)于SubsetI的這篇博客再看接下來的內(nèi)容。
這里的區(qū)別在于假設(shè)輸入的數(shù)組存在重復(fù)值,則找到所有不重復(fù)的子集。

思路一:鏈表的形式

我們可以通過例子[1,2,2,3]來說明。當(dāng)我們遇到重復(fù)值時(shí),我們可以使用一個(gè)臨時(shí)數(shù)組將所有重復(fù)值的結(jié)果臨時(shí)保存起來,在這道題目中就是[[2],[2,2]],然后再將當(dāng)前res中的結(jié)果和它一一組合成新的結(jié)果值,本例子中的當(dāng)前res為[[ ],[1]],這樣合成之后就是[[],[2],[2,2],[1,2],[1,2,2]],從而避免產(chǎn)生重復(fù)的結(jié)果。
代碼如下:

    public List> subsetsWithDup(int[] nums) {
        List> result = new LinkedList>();
        result.add(new ArrayList());
        int length = nums.length;
        Arrays.sort(nums);
        for(int i = 0 ; i> temp = new LinkedList>();
            for(List tempResult : result){
                List copyTemp = new ArrayList(tempResult);
                copyTemp.add(nums[i]);
                temp.add(copyTemp);
            }
            i++;
            while(i0){
                    List currentTemp = temp.removeFirst();
                    result.add(currentTemp);
                    List moreCurrentTemp = new ArrayList(currentTemp);
                    moreCurrentTemp.add(nums[i]);
                    temp.add(moreCurrentTemp);
                }
            }
            result.addAll(temp);
        }
        return result;
    }
思路二:遞歸

其實(shí)對于遞歸,應(yīng)當(dāng)考慮從遞歸的輸入和輸出考慮。在這里我們將遞歸的輸入為當(dāng)前的結(jié)果集,當(dāng)前的數(shù)組,和遍歷的起始下標(biāo)。在遞歸中我們會將起始下標(biāo)后的值依次加入當(dāng)前結(jié)果集,并將結(jié)果集加入結(jié)果集數(shù)組中。如果遇到重復(fù)的數(shù)字,則繼續(xù)遍歷下一個(gè)數(shù)字,直至遍歷結(jié)束。思路簡單清晰,效率也很高。

    public List>  subsetsWithDup2(int[] nums) {
        List> fnl = new ArrayList>();
        Arrays.sort(nums);
        helper(fnl, new ArrayList(), nums, 0);
        return fnl;
    }
    
    public void helper(List> fnl, List temp, int[] nums, int start){
        fnl.add(new ArrayList(temp));
        for(int i =start; istart && nums[i]==nums[i-1]) continue;
            temp.add(nums[i]);
            helper(fnl, temp, nums, i+1 );
            temp.remove(temp.size()-1);
        }
        
    }


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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67356.html

相關(guān)文章

  • leetcode-90. Subsets II

    摘要:題目描述注意題目解讀找出所有的子集。思路確定子集的來源,遍歷原始列表,每一個(gè)元素都往已有的子集列表里邊添加,同時(shí)添加到已有的子集中去,產(chǎn)生新的子集。類似于動態(tài)規(guī)劃思想,依賴于之前的東西產(chǎn)生現(xiàn)在的東西。 題目描述 Given a collection of integers that might contain duplicates, nums, return all possible ...

    lijinke666 評論0 收藏0
  • [LintCode/LeetCode] Subsets & Subsets II

    Subsets Problem Given a set of distinct integers, return all possible subsets. Notice Elements in a subset must be in non-descending order.The solution set must not contain duplicate subsets. Example ...

    tracy 評論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
  • Subsets 系列 Leetcode解題記錄

    摘要:寫這個(gè)系列是因?yàn)榧o(jì)念一下去年的今天,就是年的月號,刷題第一天,今天是一周年紀(jì)念日。排除,就是返回一空的。復(fù)雜度分析算法課講過,這個(gè)復(fù)雜度是指數(shù)次,能實(shí)現(xiàn)出來就行了,沒法優(yōu)化。復(fù)雜度分析不分析了,反正指數(shù)次。 Subsets 寫這個(gè)系列是因?yàn)榧o(jì)念一下去年的今天,就是2015年的9月14號,刷題第一天,今天是一周年紀(jì)念日。當(dāng)時(shí)只敢做easy還得抄答案的我想啥時(shí)候能做上medium啊,事到如...

    gityuan 評論0 收藏0
  • [Leetcode] Subset 子集

    摘要:深度優(yōu)先搜索復(fù)雜度時(shí)間空間遞歸棧空間思路這道題可以轉(zhuǎn)化為一個(gè)類似二叉樹的深度優(yōu)先搜索。另外需要先排序以滿足題目要求。新的集合要一個(gè)新的,防止修改引用。 Subset I Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must be in n...

    hzc 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<