From 34f33c3afdf150cee1526644b92dcb9baa36f39b Mon Sep 17 00:00:00 2001 From: chayan das <110921638+Chayandas07@users.noreply.github.com> Date: Wed, 14 Aug 2024 00:35:14 +0530 Subject: [PATCH] Create 40. Combination Sum II --- 40. Combination Sum II | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 40. Combination Sum II diff --git a/40. Combination Sum II b/40. Combination Sum II new file mode 100644 index 0000000..605f0b2 --- /dev/null +++ b/40. Combination Sum II @@ -0,0 +1,36 @@ +class Solution { +public: + vector> combinationSum2(vector& candidates, int target) { + sort(candidates.begin(), candidates.end()); + vector> res; + + vector comb; + dfs(candidates, target, 0, comb, res); + return res; + } + + void dfs(vector& candidates, int target, int start, vector& comb, vector>& res) { + if (target < 0) { + return; + } + + if (target == 0) { + res.push_back(comb); + return; + } + + for (int i = start; i < candidates.size(); i++) { + if (i > start && candidates[i] == candidates[i-1]) { + continue; + } + + if (candidates[i] > target) { + break; + } + + comb.push_back(candidates[i]); + dfs(candidates, target - candidates[i], i + 1, comb, res); + comb.pop_back(); + } + } +};