Skip to content

Commit 1c50702

Browse files
committed
solve problem Subsets
1 parent 5a1879e commit 1c50702

File tree

5 files changed

+59
-0
lines changed

5 files changed

+59
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ All solutions will be accepted!
227227
|46|[Permutations](https://leetcode-cn.com/problems/permutations/description/)|[java/py/js](./algorithms/Permutations)|Medium|
228228
|47|[Permutations II](https://leetcode-cn.com/problems/permutations-ii/description/)|[java/py/js](./algorithms/PermutationsII)|Medium|
229229
|77|[Combinations](https://leetcode-cn.com/problems/combinations/description/)|[java/py/js](./algorithms/Combinations)|Medium|
230+
|78|[Subsets](https://leetcode-cn.com/problems/subsets/description/)|[java/py/js](./algorithms/Subsets)|Medium|
230231

231232
# Database
232233
|#|Title|Solution|Difficulty|

algorithms/Subsets/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Subsets
2+
This problem is easy to solve by Backtracking Algorithm

algorithms/Subsets/Solution.java

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public List<List<Integer>> subsets(int[] nums) {
3+
List<List<Integer>> res = new ArrayList<List<Integer>>();
4+
backTrack(0, nums, new ArrayList<Integer>(), res);
5+
return res;
6+
}
7+
8+
public void backTrack(int beg, int[] nums, List<Integer> temp, List<List<Integer>> res) {
9+
if (beg <= nums.length) {
10+
res.add(temp);
11+
for (int i = beg; i < nums.length; i++) {
12+
List<Integer> t = new ArrayList<Integer>(temp);
13+
t.add(nums[i]);
14+
backTrack(i + 1, nums, t, res);
15+
}
16+
}
17+
}
18+
}

algorithms/Subsets/solution.js

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[][]}
4+
*/
5+
var subsets = function(nums) {
6+
let res = []
7+
backTrack(0, nums, [], res)
8+
return res
9+
};
10+
11+
var backTrack = function(beg, nums, temp, res) {
12+
if (beg <= nums.length) {
13+
res.push(temp)
14+
for (let i = beg; i < nums.length; i++) {
15+
let t = temp.slice()
16+
t.push(nums[i])
17+
backTrack(i + 1, nums, t, res)
18+
}
19+
}
20+
}

algorithms/Subsets/solution.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution(object):
2+
def subsets(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: List[List[int]]
6+
"""
7+
res = []
8+
self.backtrack(0, nums, [], res)
9+
return res
10+
11+
def backtrack(self, beg, nums, temp, res):
12+
if beg <= len(nums):
13+
res.append(temp)
14+
for i in xrange(beg, len(nums)):
15+
num = nums[i]
16+
t = temp[:]
17+
t.append(num)
18+
self.backtrack(i + 1, nums, t, res)

0 commit comments

Comments
 (0)