leetcode_Combination Sum III

来源:互联网 发布:手机网络新游戏 编辑:程序博客网 时间:2024/06/10 07:50

描述:

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Ensure that numbers within the set are sorted in ascending order.

Example 1:

Input: k = 3, n = 7

Output:

[[1,2,4]]

Example 2:

Input: k = 3, n = 9

Output:

[[1,2,6], [1,3,5], [2,3,4]]

思路:

1.和Combination Sum II思路类似,只是在其基础上判断一下当有满足条件的结果时,其序列长度是否为k

代码:

public List<List<Integer>> combinationSum3(int k, int n) {int candidates[]={1,2,3,4,5,6,7,8,9};List<List<Integer>>listResult=new ArrayList<List<Integer>>();ArrayList<Integer>list=new ArrayList<Integer>();Arrays.sort(candidates);combination(listResult, list, candidates, k,n,0);return listResult;}public void combination(List<List<Integer>>listResult,ArrayList<Integer>list,int[] candidates,int k, int target,int begin){if(target==0){if(list.size()==k)<span style="font-size: 13.3333339691162px; font-family: Arial, Helvetica, sans-serif;">//</span><span style="font-size: 13.3333339691162px; font-family: Arial, Helvetica, sans-serif;">Combination Sum III</span>listResult.add(list);return;}for(int i=begin;i<candidates.length&&target>=candidates[i];i++){if(i==begin||candidates[i]!=candidates[i-1])//<span style="font-size: 13.3333339691162px;">Combination Sum II</span>{ArrayList<Integer>copy=new ArrayList<Integer>(list);copy.add(candidates[i]);combination(listResult, copy, candidates,k,target- candidates[i],i+1);}}}


0 0
原创粉丝点击