publicclassSolution { /** * @param n: Given the range of numbers * @param k: Given the numbers of combinations * @return: All the combinations of k numbers out of 1..n */publicList<List<Integer>> combine(int n,int k) {// write your code hereList<List<Integer>> rst =newArrayList<List<Integer>>();dfs(rst,newArrayList<Integer>(), n, k,0);return rst; }privatevoiddfs(List<List<Integer>> rst,List<Integer> list,int n,int k,int prev){if(list.size() == k) {rst.add(newArrayList<Integer>(list));//list.remove(list.size() - 1); }for(int i = prev +1; i <= n; i++){if(list.contains(i)) continue;list.add(i);dfs(rst, list, n, k, i);list.remove(list.size() -1); } }}
classSolution { /** * @param S: A set of numbers. * @return: A list of lists. All valid subsets. */publicArrayList<ArrayList<Integer>> subsets(int[] nums) {// write your code hereArrayList<ArrayList<Integer>> rst =newArrayList<ArrayList<Integer>>();if(nums ==null||nums.length==0) return rst;Arrays.sort(nums);dfs(rst,newArrayList<Integer>(), nums,0);return rst; }privatevoiddfs(ArrayList<ArrayList<Integer>> rst,List<Integer> list,int[] nums,int index){rst.add(newArrayList<Integer>(list));for(int i = index; i <nums.length; i++){list.add(nums[i]);dfs(rst, list, nums, i +1);list.remove(list.size() -1); } }}