Combination题目描述:给定两个整数n和k,返回[1,n]范围内k个数的所有可能组合。您可以按任何顺序返回答案。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:dfs(深度优先遍历)声明两个全局变量分别为结果集(result)和当前路径(path),加入深度优先遍历的方式。该方法的具体逻辑如下:当k=0时,表示当前路径中已经有k个数字,表示当前路径满足条件,加入到结果集中;然后从1开始遍历数字,递归调用dfs方法,调用后从路径中移除当前路径的最后一个数字。最后返回的结果集是所有满足条件的组合。importjava.util.ArrayList;importjava.util.List;publicclassLeetCode_077{/***结果集*/privatestaticList>result=newArrayList<>();/***当前路径*/privatestaticList
>combine(intn,intk){//递归方法入口dfs(1,n,k);//返回结果集返回结果;}/***深度优先搜索**@paramu路径起点*@paramn一共有n个数*@paramk剩下多少个值达到原k个数*/privatestaticvoiddfs(intu,intn,intk){if(k==0){/***当k等于0时,表示已经有k个数,满足条件放入结果集中*/结果.添加(新ArrayList<>(路径));返回;}for(inti=u;i<=n-k+1;i++){/***将当前数字添加到路径中*/路径.add(i);dfs(i+1,n,k-1);path.remove(path.size()-1);}}publicstaticvoidmain(String[]args){for(List
