集合的子集

2021-08-15 14:46:29 字數 1059 閱讀 7616

題目描述

請編寫乙個方法,返回某集合的所有非空子集。

給定乙個int陣列a和陣列的大小int n,請返回a的所有非空子集。保證a的元素個數小於等於20,且元素互異。各子集內部從大到小排序,子集之間字典逆序排序,見樣例。

測試樣例:

[123,456,789]

返回:

假設有測試樣例[a,b,c],來看它是如何得到結果的。

1、首先集合中只有a,那麼它的子集就是

2、後來向集合中加入了b,此時集合的子集為

3、最後向集合中加入了c,此時集合的子集為

可以發現以下規律:

在向集合中新增乙個元素時,這時集合的子集由三部分組成。即原來集合的子集+向原來每個集合的子集中加入新增的元素+新增元素單獨組成的集合。

通過上述分析可得到以下**:

public

class

jihedeziji

/***

*@param a

*@param n 陣列元素個數

*@return

*/public arraylist> getsubsetscore(int a,int n)

arraylist> temp=getsubsets(a, n-1);

for(int i=0;ilist2=temp.get(i);

list2.add(a[n-1]);//1、向原集合的各個子集中新增新元素e

for(int j=0;jlist2=new arraylist<>();

list2.add(a[n-1]);//2、原集合的子集

result.add(list2);//3、新元素單獨組成的集合

result.addall(temp);

return result;

}}

no one can be sure about his future.future is not what fortune teller tells you.it is created by yourself.

求解集合的子集

描述 求解集合的子集 思路 利用二進位制思想,如果在集合中某位數存在,那麼對應的二進位制的相應位數即為1。比如,集合對應的二進位制表示為 10110010 從右往左數 因此如果我們確定了乙個二進位制序列,對應的也就確定了乙個集合。此外,集合的運算可以利用 運算子,依次等價於集合的交集,並集和對稱差集...

求集合的子集

給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 可以用位運算來求子集。用一串長度為陣列大小的二進位制串,對應的位表示有無取到那個位置的數。由於求全部子集,所...

演算法 集合的子集

給定乙個集合,輸出它的所有子集。示例 給定集合 1,2,3 應該輸出 增量構造法,每次選擇乙個元素放到集合中,每次操作的結果即是乙個子集。遞迴操作,每次向當前集合中新增乙個比當前集合中最大的元素大1的數。from future import print function defprint subse...