Skip to content

Commit cbbe739

Browse files
committed
recursion and digits
1 parent 344782b commit cbbe739

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

GenerateParenthesis.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// this is easy to think of recursion
2+
// how we can do recursion??
3+
// think about inner and outer part
4+
// 1 and 2 consist of 3
5+
// n = 1 ()
6+
// n = 2 ()(), (())
7+
// n = 3 ()()(), (())(),()(()), ((())), (()())
8+
9+
10+
class Solution {
11+
public:
12+
vector<string> generateParenthesis(int n) {
13+
vector<string> result;
14+
if(n == 0) return vector<string> (1, "");
15+
if(n == 1) return vector<string> (1, "()");
16+
for(int i = 0; i < n; i++){
17+
for(auto inner : generateParenthesis(i))
18+
for(auto outer : generateParenthesis( n - 1 - i))
19+
result.push_back("(" + inner + ")" + outer);
20+
}
21+
return result;
22+
23+
}
24+
};

PlusOne.cpp

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
class Solution {
2+
public:
3+
vector<int> plusOne(vector<int> &digits) {
4+
add(digits, 1);
5+
return digits;
6+
}
7+
void add(vector<int> &digits, int d){
8+
int c = d;
9+
for(auto it = digits.rbegin(); it != digits.rend(); it++){
10+
*it += c;
11+
c = *it / 10;
12+
*it %= 10;
13+
}
14+
if(c > 0) digits.insert(digits.begin(), 1);
15+
}
16+
};
17+
18+
19+
// method2
20+
// 12 + 1 simeple one
21+
// 19 + 1 carry = 1
22+
// 9 + 1 digit number needs change
23+
24+
class Solution {
25+
public:
26+
vector<int> plusOne(vector<int> &digits) {
27+
int carry = 1;
28+
int n = digits.size();
29+
30+
for(int i = n - 1; i >= 0; i--){
31+
digits[i] += carry;
32+
if(digits[i] >= 10){
33+
digits[i] %= 10;
34+
carry = 1;
35+
}else{
36+
carry = 0;
37+
break;
38+
}
39+
}
40+
if(carry == 1){
41+
digits.insert(digits.begin(), 1);
42+
}
43+
44+
return digits;
45+
46+
}
47+
};

0 commit comments

Comments
 (0)