96 lines
2.2 KiB
Java
96 lines
2.2 KiB
Java
|
//给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
|
|||
|
//
|
|||
|
// 你可以按任何顺序返回答案。
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
// 示例 1:
|
|||
|
//
|
|||
|
//
|
|||
|
//输入: n = 4, k = 2
|
|||
|
//输出:
|
|||
|
//[
|
|||
|
// [2,4],
|
|||
|
// [3,4],
|
|||
|
// [2,3],
|
|||
|
// [1,2],
|
|||
|
// [1,3],
|
|||
|
// [1,4],
|
|||
|
//]
|
|||
|
//
|
|||
|
// 示例 2:
|
|||
|
//
|
|||
|
//
|
|||
|
//输入: n = 1, k = 1
|
|||
|
//输出: [[1]]
|
|||
|
//
|
|||
|
//
|
|||
|
//
|
|||
|
// 提示:
|
|||
|
//
|
|||
|
//
|
|||
|
// 1 <= n <= 20
|
|||
|
// 1 <= k <= n
|
|||
|
//
|
|||
|
// Related Topics 数组 回溯
|
|||
|
// 👍 626 👎 0
|
|||
|
|
|||
|
package leetcode.editor.cn;
|
|||
|
|
|||
|
import java.util.ArrayList;
|
|||
|
import java.util.List;
|
|||
|
|
|||
|
//77:组合
|
|||
|
public class Combinations {
|
|||
|
public static void main(String[] args) {
|
|||
|
//测试代码
|
|||
|
Solution solution = new Combinations().new Solution();
|
|||
|
}
|
|||
|
|
|||
|
//力扣代码
|
|||
|
//leetcode submit region begin(Prohibit modification and deletion)
|
|||
|
class Solution {
|
|||
|
List<List<Integer>> list = new ArrayList<>();
|
|||
|
// public List<List<Integer>> combine(int n, int k) {
|
|||
|
// int[] nums = new int[n];
|
|||
|
// for (int i = 0; i < n; i++) {
|
|||
|
// nums[i] = i + 1;
|
|||
|
// }
|
|||
|
// dfs(nums, new ArrayList<>(), k);
|
|||
|
// return list;
|
|||
|
// }
|
|||
|
//
|
|||
|
// private void dfs(int[] nums, List<Integer> temp, int k) {
|
|||
|
// if (k == temp.size()) {
|
|||
|
// list.add(new ArrayList<>(temp));
|
|||
|
// return;
|
|||
|
// }
|
|||
|
//
|
|||
|
// for (int num : nums) {
|
|||
|
// if (temp.size() == 0 || num > temp.get(temp.size() - 1)) {
|
|||
|
// temp.add(num);
|
|||
|
// dfs(nums, temp, k);
|
|||
|
// temp.remove(temp.size() - 1);
|
|||
|
// }
|
|||
|
// }
|
|||
|
// }
|
|||
|
public List<List<Integer>> combine(int n, int k) {
|
|||
|
dfs(n, k, 1, new ArrayList<>());
|
|||
|
return list;
|
|||
|
}
|
|||
|
|
|||
|
public void dfs(int n, int k, int cur, List<Integer> list) {
|
|||
|
if (k == 0) {
|
|||
|
this.list.add(new ArrayList<>(list));
|
|||
|
return;
|
|||
|
}
|
|||
|
for (int i = cur; i <= n - k + 1; i++) {
|
|||
|
list.add(i);
|
|||
|
dfs(n, k - 1, i + 1, list);
|
|||
|
list.remove(list.size() - 1);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//leetcode submit region end(Prohibit modification and deletion)
|
|||
|
|
|||
|
}
|