recursion
1 public class Solution { 2 public ArrayList<ArrayList<Integer>> combine(int n, int k) { 3 // IMPORTANT: Please reset any member data you declared, as 4 // the same Solution instance will be reused for each test case. 5 ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); 6 if(n < 1||k < 1) 7 return null; 8 ArrayList<Integer> list = new ArrayList<Integer>(); 9 generate(result, list, 1, n, k); 10 return result; 11 } 12 13 private void generate(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int depth, int n, int k){ 14 if(list.size() == k){ 15 ArrayList<Integer> tmp = new ArrayList<Integer>(); 16 tmp.addAll(list); 17 result.add(tmp); 18 return; 19 } 20 21 for(int i=depth; i <= n; i++) 22 { 23 list.add(i); 24 generate(result, list, i+1, n, k); 25 list.remove(list.size()-1); 26 } 27 } 28 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步