Skip to content

Commit 0605a07

Browse files
committed
solve problem Combinations
1 parent d8d4a6c commit 0605a07

File tree

5 files changed

+64
-0
lines changed

5 files changed

+64
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ All solutions will be accepted!
225225
|40|[Combination Sum II](https://leetcode-cn.com/problems/combination-sum-ii/description/)|[java/py/js](./algorithms/CombinationSumII)|Medium|
226226
|216|[Combination Sum III](https://leetcode-cn.com/problems/combination-sum-iii/description/)|[java/py/js](./algorithms/CombinationSumIII)|Medium|
227227
|46|[Permutations](https://leetcode-cn.com/problems/permutations/description/)|[java/py/js](./algorithms/Permutations)|Medium|
228+
|77|[Combinations](https://leetcode-cn.com/problems/combinations/description/)|[java/py/js](./algorithms/Combinations)|Medium|
228229

229230
# Database
230231
|#|Title|Solution|Difficulty|

algorithms/Combinations/README.md

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

algorithms/Combinations/Solution.java

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

algorithms/Combinations/solution.js

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

algorithms/Combinations/solution.py

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

0 commit comments

Comments
 (0)