题目:
思路:
- 注意要用List实例化IList。
- 二进制中的0和1正好可以表示元素是否在集合中。
- 任一集合的子集有2的n次方个,设一个大循环代表求每一个子集合。
- (i&(int)(Math.Pow(2,j))!=0用来判断第i个子集中是否包含第j个元素。
- 注意Math函数返回的值是double型。
代码:
public class Solution {
public IList<IList<int>> Subsets(int[] nums) {
IList<IList<int>> result=new List<IList<int>>();
for(int i=0;i<Math.Pow(2,nums.Length);i++)
{
IList<int> temp=new List<int>();
for(int j=0;j<nums.Length;j++)
{
if((i&(int)Math.Pow(2,j))!=0)
{
temp.Add(nums[j]);
}
}
result.Add(temp);
}
return result;
}
}