欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode::Subsets

发布时间:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Leetcode::Subsets 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Given a set of distinct integers, S, return all possible subsets.

分析:题目就是给一个整数集合,给出所以的子集。 基本思想是递归或者说是迭代的方法。用前面得到的集合来构造

后面的。但是怎样高效、方便的构造集合是关键点。比如,开始想到的是先生成集合中0个元素、1个元素。。。逐步增多

但这样很难实现。实际高效的做法是用i个元素生成所有子集,然后往里面添加第(i+1)个元素,将得到的元素集合加到前面结果

中,就可以得到最终的结果了。

1 class Solution { 2 public: 3 vector<vector<int> > subsets(vector<int> &S) { 4 vector<vector<int> > sets; 5 vector<int> subs; 6 sort(S.begin(),S.end()); 7 sets.push_back(subs); 8 for(int i=0;i<S.size();i++) 9 { 10 int c_size = sets.size(); 11 for(int j=0;j<c_size;j++) 12 { 13 subs = sets[j]; 14 subs.push_back(S[i]); 15 sets.push_back(subs); 16 } 17 } 18 19 return sets; 20 } 21 };

代码非常的简洁,但是注意第10行,是每次加之前,需要记录集合中已有的子集个数,否则后面size变化,会导致死循环!

转载于:https://www.cnblogs.com/soyscut/p/3770754.html

总结

以上是生活随笔为你收集整理的Leetcode::Subsets的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。