又是一周过去了,大家这周有木有在算法上有所精进呢?今天我们来看看一些让我们求子集的问题,许多问题涉及到处理给定元素的排列组合,我们需要巧妙地处理它们。...这类问题可能在面试中不那么常见,不过本身思想并不难,我们可以一起了解一下。
先看一道简单的题:给定一个集合,集合中的元素不重复,找出这些元素组成的所有子集。...为了找到给定集合的所有子集,我们可以使用广度优先搜索算法。我们可以从一个空集开始,迭代集合中的所有元素,把它们加到已有的子集中创建新的子集。...以空集开场,[[]]。
把第一个数字1加入到已有的子集中以创建新的子集,[[], [1]]。
把第二个数字5加入到已有的子集中[[], [1], [5], [1,5]]。...3], [1,5], [1,3], [5,3], [1,5,3], [3,3], [1,3,3], [3,3,5], [1,5,3,3]
我们之前说过了,掌握了题型的套路之后,之后遇到问题只是在套路的基础上针对特定的条件特殊处理而已