给定一个无重复元素的正整数数组 nums 和一个正整数 target ,找出 nums 中所有可以使数字之和为目标数 target 的组合,nums 中的数可以重复选取,只要选出的组合中有一个数不同则视为是不同组合。
数据范围:数组长度满足
, 数组中的元素满足
,
,保证组合数结果少于 150 个
1,[1]
[[1]]
5,[1,4,5]
[[1,4],[5],[1,1,1,1,1]]
5,[2]
[]
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param target int整型 * @param nums int整型一维数组 * @return int整型二维数组 */ func combinationCount( target int , nums []int ) [][]int { ans:=[][]int{} var dfs func([]int,int,int) dfs=func(path []int,sum int,idx int){ if sum>=target{ if sum==target{ tmp:=make([]int,len(path)) copy(tmp,path) ans=append(ans,tmp) } return } for i:=idx;i<len(nums);i++{ path=append(path,nums[i]) sum+=nums[i] dfs(path,sum,i) path=path[:len(path)-1] sum-=nums[i] } } dfs([]int{},0,0) return ans }