【leetcode】第77題 Combinations 題目+解析+JAVA程式碼
阿新 • • 發佈:2019-02-17
【題目】
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]【解析】
這道題給了一個n和一個k,讓我們從1到n中挑選k個數組成一個集合,求全部的集合。用遞迴實現。
【程式碼】
public List<List<Integer>> combine(int n, int k) { List<List<Integer>> res = new ArrayList<List<Integer>>(); List<Integer> temp=new ArrayList<Integer>(); combineFunction(res,temp,n-k+1,k,1);//n-k+1之後數量小於k個, return res; } public void combineFunction (List<List<Integer>> res,List<Integer> temp,int to,int k ,int start){ if(k==0){ res.add(new ArrayList<Integer>(temp)); return; } else{ for(int i=start;i<=to;i++){ temp.add(i); combineFunction(res,temp,to+1,k-1,i+1); temp.remove(temp.size()-1); } } }