Skip to content

Commit 9e29029

Browse files
committed
[Function add]
1. Add c++ version of leetcode solutions.
1 parent f0b78e6 commit 9e29029

File tree

4 files changed

+105
-0
lines changed

4 files changed

+105
-0
lines changed

Diff for: leetcode/40. Combination Sum II.md

+32
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,35 @@ class Solution {
123123
}
124124
}
125125
```
126+
127+
### C++ version
128+
* Method 1: Recursion
129+
```objectivec
130+
class Solution {
131+
int target_;
132+
133+
void recursion(vector<int>& candidates, int index, int sum, vector<int>& cur, vector<vector<int>>& res_){
134+
if(target_ == sum) res_.push_back(cur);
135+
else if(sum < target_){
136+
int size = candidates.size();
137+
for(int i = index; i < size; ++i){
138+
while(i > index && i < size && candidates[i] == candidates[i - 1]) ++i;
139+
if(i >= size) break;
140+
cur.emplace_back(candidates[i]);
141+
recursion(candidates, i + 1, sum + candidates[i], cur, res_);
142+
cur.pop_back();
143+
}
144+
}
145+
}
146+
public:
147+
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
148+
if(candidates.empty()) return {};
149+
sort(candidates.begin(), candidates.end());
150+
vector<vector<int>> res_;
151+
vector<int> cur;
152+
target_ = target;
153+
recursion(candidates, 0, 0, cur, res_);
154+
return res_;
155+
}
156+
};
157+
```

Diff for: leetcode/77. Combinations.md

+25
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,28 @@ class Solution {
8989
}
9090
}
9191
```
92+
93+
### C++ Version
94+
* Method 1: Recursion
95+
```objectivec
96+
class Solution {
97+
void recursion(int n, int cur, int k, vector<int>& temp, vector<vector<int>>& res){
98+
if(k == temp.size()) res.emplace_back(temp);
99+
else{
100+
for(int i = cur; i <= n; ++i){
101+
temp.emplace_back(i);
102+
recursion(n, i + 1, k, temp, res);
103+
temp.pop_back();
104+
}
105+
}
106+
}
107+
public:
108+
vector<vector<int>> combine(int n, int k) {
109+
if(k == 0 || n < k) return {};
110+
vector<vector<int>> res;
111+
vector<int> cur;
112+
recursion(n, 1, k, cur, res);
113+
return res;
114+
}
115+
};
116+
```

Diff for: leetcode/78. Subsets.md

+23
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,26 @@ class Solution {
102102
}
103103
}
104104
```
105+
106+
### C++ version
107+
* Method 1: power set
108+
```objectivec
109+
class Solution {
110+
vector<vector<int>> res;
111+
void dfs(int cur, vector<int>& nums, vector<int>& temp){
112+
res.emplace_back(temp);
113+
for(int i = cur; i < nums.size(); ++i){
114+
temp.emplace_back(nums[i]);
115+
dfs(i + 1, nums, temp);
116+
temp.pop_back();
117+
}
118+
}
119+
public:
120+
vector<vector<int>> subsets(vector<int>& nums) {
121+
if(nums.empty()) return {};
122+
vector<int> temp;
123+
dfs(0, nums, temp);
124+
return res;
125+
}
126+
};
127+
```

Diff for: leetcode/90. Subsets II.md

+25
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,29 @@ class Solution {
125125
}
126126
}
127127
}
128+
```
129+
130+
### C++ version
131+
```objectivec
132+
class Solution {
133+
vector<vector<int>> res_;
134+
void dfs(int cur, vector<int>& temp, vector<int>& nums){
135+
res_.emplace_back(temp);
136+
int size = nums.size();
137+
for(int i = cur; i < size; ++i){
138+
while(i > cur && i < size && nums[i] == nums[i - 1]) ++i;
139+
if(i >= size) break;
140+
temp.emplace_back(nums[i]);
141+
dfs(i + 1, temp, nums);
142+
temp.pop_back();
143+
}
144+
}
145+
public:
146+
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
147+
sort(nums.begin(), nums.end());
148+
vector<int> temp;
149+
dfs(0, temp, nums);
150+
return res_;
151+
}
152+
};
128153
```

0 commit comments

Comments
 (0)