LeetCode 题解(164): Subsets
来源:互联网 发布:数据分析表怎么做 编辑:程序博客网 时间:2024/05/16 19:37
题目:
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], []]
题解:
Backtracing。
C++版:
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> results; vector<int> result; results.push_back(result); sort(nums.begin(), nums.end()); for(int i = 0; i < nums.size(); i++) { result.push_back(nums[i]); results.push_back(result); subset(results, result, nums, i + 1); result.pop_back(); } return results; } void subset(vector<vector<int>>& results, vector<int>& result, vector<int>& nums, int i) { if(i == nums.size()) return; for(int j = i; j < nums.size(); j++) { result.push_back(nums[j]); results.push_back(result); subset(results, result, nums, j+1); result.pop_back(); } }};
Java版:
public class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> results = new ArrayList<List<Integer>>(); results.add(new ArrayList<Integer>()); Arrays.sort(nums); for(int i = 0; i < nums.length; i++) { List<Integer> result = new ArrayList<>(); result.add(nums[i]); List<Integer> temp = new ArrayList<>(); temp.addAll(result); results.add(temp); subset(nums, result, results, i + 1); result.clear(); } return results; } public void subset(int[] nums, List<Integer> result, List<List<Integer>> results, int i) { if(i == nums.length) return; for(int j = i; j < nums.length; j++) { result.add(nums[j]); List<Integer> temp = new ArrayList<>(); temp.addAll(result); results.add(temp); subset(nums, result, results, j + 1); result.remove(result.size() - 1); } }}
Python版:
import copyclass Solution: # @param {integer[]} nums # @return {integer[][]} def subsets(self, nums): nums.sort() results, result = [[]], [] for i in range(len(nums)): result.append(nums[i]) results.append(copy.copy(result)) self.subset(nums, results, result, i + 1) result.pop() return results def subset(self, nums, results, result, i): if i == len(nums): return for j in range(i, len(nums)): result.append(nums[j]) results.append(copy.copy(result)) self.subset(nums, results, result, j + 1) result.pop()
0 0
- LeetCode 题解(164): Subsets
- LeetCode题解:Subsets
- LeetCode题解:Subsets II
- 【题解】Leetcode.78.Subsets
- Leetcode 78. Subsets题解
- leetcode题解-78. Subsets && 90. Subsets II
- Leetcode 90. Subsets II题解
- LeetCode Algorithms 78. Subsets 题解
- LeetCode题解:Subsets I and II
- LeetCode 题解(24): Subsets II
- 【VIP】【leetcode题解】【回溯】【97.5】【M】Subsets
- 【leetcode题解】【回溯】【54】【M】Subsets II
- 【LeetCode】 Subsets Subsets II
- 【LeetCode】Subsets & Subsets II
- LeetCode Subsets && Subsets II
- LeetCode Subsets && Subsets II
- LeetCode-Subsets & Subsets II
- LeetCode: Subsets
- 图论基础UVA10047
- 【leetcode每日一题】NO206.Reverse Linked List
- HDU 5218 The E-pang Palace (简单几何—2014广州现场赛)
- 我学正则表达式(2)——{m,n},?,*,+
- hunnu oj 11544 小明的烦恼——找字符串(字符串的最小表示法)
- LeetCode 题解(164): Subsets
- Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
- updatepanel更新dropdownlist后其css样式失效的解决方案
- FILEUTILS 介绍
- 设计模式-抽象工厂模式
- Windows/MFC,C++中的TCHAR体系/char体系/WCHAR体系及其相互转换
- linux怎么设置默认启动到字符界面,而非图形界面
- 样式 控制字符宽度,隐藏或换行
- 十道海量数据处理面试题与十个方法大总结