高分求助!!LeetCode!!!

Givenasetofdistinctintegers,nums,returnallpossiblesubsets.Note:Elementsinasubsetmustb... Given a set of distinct integers, nums, return all possible subsets.

Note:

Elements in a subset must be in non-descending order.
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],
 []
]
展开
 我来答
慕名小妹妹
2016-06-02 · TA获得超过1090个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:126万
展开全部
  本题大意:给定一个数集,计算得出它的所有子集
  需要注意一下几点:
  1、子集不能重复
  2、子集里面的数需要按照非降序排列
  解题思路:考虑到用位操作来模拟所有的排列组合。以数集大小等于3为例:
  3位二进制的全排列为:000,001,010,011,100,101,111
  利用这个全排列,为1就选入子集,为0就不选。很容易就得到了所有子集。
  代码:
  class Solution {
  public:
vector<vector<int>> subsets(vector<int>& nums) {
  long n = pow(2,nums.size());//按位数得到全排列最大值 sort(nums.begin(),nums.end());//由于子集的数需要按非降序排列,故先将集合排序 vector<vector<int>> ret;
  for(long i = 0 ; i < n ; i++)

  {
  vector<int> tempset;
  for(int j = 0 ; j < nums.size() ;j++)
  {
  if((i>>j)&1==1)//判断每一位是否为1
  {
  tempset.push_back(nums[j]);
  }
  }
  ret.push_back(tempset);
  }
  return ret;
  }
  };
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式