题目描述
给定两个整数 n
和 k
,返回范围 [1, n]
中所有可能的 k
个数的组合。
你可以按 任何顺序 返回答案。
示例 1:
1 2 3 4 5 6 7 8 9 10
| 输入:n = 4, k = 2 输出:
|
解题思路
- 回溯:元素无重复不可复选问题
执行用时:18 ms, 在所有 Java 提交中击败了25.06%的用户
内存消耗:42.9 MB, 在所有 Java 提交中击败了37.61%的用户
通过测试用例:27 / 27
时间 O(N)
空间 O(N)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { List<List<Integer>> res=new ArrayList<List<Integer>>(); List<Integer> list=new ArrayList<Integer>(); public List<List<Integer>> combine(int n, int k) { backTrace(n,1,k); return res; } public void backTrace(int n,int begin,int k){ if(list.size()==k){ res.add(new ArrayList(list)); return; } for(;begin<=n;begin++){ list.add(begin); backTrace(n,begin+1,k); list.remove(list.size()-1); } } }
|