单句return;的用法:
上午看了题解 下午照猫画虎的
public List<List<Integer>> combine(int n, int k) { // List<List<Integer>> res=new ArrayList<>(); //这两句等价 List<List<Integer>> res=new ArrayList<List<Integer>>(); if(k<0||n<k) { //这个判断根本没有想 return res; } Deque<Integer> path=new ArrayDeque<>();//这里的ArrayDeque dfs(n,k,1,path,res); return res; } private void dfs(int n, int k, int begin, Deque<Integer> path, List<List<Integer>> res) { if(path.size()==k) { res.add(new ArrayList<>(path));//这个传参什么的 需要在这块新建 才能传入 return; //这里不加return;为啥不报错 加return后面部分不执行了 ex这个for //加两个输出调试发现会出现栈里面大于3的情况 不会出错是因为没有输出 //只输出三个的 但是会有重复的 为什么重复的不会错 但是一加下一行剪枝就会出错 } for(int i=begin;i<=n-(k-path.size())+1;i++) {//剪枝 path.addLast(i); System.out.println("递归之前 => " + path); dfs(n,k,i+1,path,res);//这里k不变因为最后比长度的时候包含了前面塞入的 path.removeLast(); System.out.println("递归之hou => " + path); } }
标签:77,return,组合,int,res,List,力扣,new,path From: https://www.cnblogs.com/ayuanjiejie/p/17214117.html