diff --git a/kotlin/40-Combination-Sum.kt b/kotlin/40-Combination-Sum.kt new file mode 100644 index 000000000..bbd8c1cf2 --- /dev/null +++ b/kotlin/40-Combination-Sum.kt @@ -0,0 +1,27 @@ +class Solution { + fun combinationSum2(candidates: IntArray, target: Int): List> { + val res = mutableListOf>() + candidates.sort() + dfs(candidates, target, 0, mutableListOf(), res) + return res + } + + fun dfs(nums: IntArray, target: Int, idx: Int, list: MutableList, res: MutableList>) { + + if (target == 0) { + res.add(ArrayList(list)) + return + } + + if (idx >= nums.size || target < 0) + return + + for (i in idx..nums.size-1) { + if (i == idx || nums[i] != nums[i-1]) { + list.add(nums[i]) + dfs(nums, target - nums[i], i+1, list, res) + list.removeAt(list.size-1) + } + } + } +} \ No newline at end of file