LintCode 17. 子集
2018-02-06 22:00
274 查看
题目
给定一个含不同整数的集合,返回其所有的子集注意事项
子集中的元素排列必须是非降序的,解集必须不包含重复的子集
您在真实的面试中是否遇到过这个题?
Yes
样例
如果 S = [1,2,3],有如下的解:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
挑战
你可以同时用递归与非递归的方式解决么?
标签
递归 优步 脸书
思路
水题,基础DFS。代码
class Solution: """ @param: nums: A set of numbers @return: A list of lists """ def __init__(self): self.res_list = [] def dfs(self, subset, start_index, nums): self.res_list.append(subset[:]) for i in range(start_index, len(nums)): subset.append(nums[i]) self.dfs(subset, i + 1, nums) subset.pop(-1) def subsets(self, nums): # write your code here nums.sort() self.dfs([], 0, nums) return self.res_list
相关文章推荐
- lintcode&九章算法——Lintcode No.17 子集 ? 待解决
- LintCode-----17.带重复元素的子集
- LintCode:子集
- LintCode每日一练-限制条件子集
- LintCode 17 子集
- lintcode 中等题:subSets 子集
- lintcode/leetcode由易至难第18题:Find Bottom Left Tree Value
- Improving Your Code with lint
- lintcode:Word Search II
- lintcode 容易题:Binary Tree Inorder Traversal 二叉树的中序遍历
- lintcode 容易题 :Singleton 单例
- lintcode:Backpack
- lintcode:买卖股票的最佳时机 III
- LintCode "Count of Smaller Number before itself"
- 算法题:lintcode#56 两数之和(java)
- Lintcode---单词的添加与查找
- lintcode-87-删除二叉查找树的节点
- lintcode 容易题:Partition List 链表划分
- LINTCODE————最小划分
- Lintcode 单词的添加与查找