Skip to content

Commit 6e254fa

Browse files
committed
4 problems solved.
1 parent 12ef63e commit 6e254fa

File tree

4 files changed

+107
-0
lines changed

4 files changed

+107
-0
lines changed

src/22.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
vector<string> generateParenthesis(int n) {
2+
if (n <= 0)
3+
return {};
4+
5+
vector<string> res;
6+
string s;
7+
generate(s, 0, 0, n, res);
8+
9+
return res;
10+
}
11+
12+
void generate(const string& s, int left, int right, int n, vector<string>& res)
13+
{
14+
if (left == n && right == n)
15+
res.push_back(s);
16+
else
17+
{
18+
if (left < n)
19+
{
20+
string tmp(s);
21+
tmp.push_back('(');
22+
generate(tmp, left+1, right, n, res);
23+
}
24+
if (left > right)
25+
{
26+
string tmp(s);
27+
tmp.push_back(')');
28+
generate(tmp, left, right+1, n, res);
29+
}
30+
}
31+
}

src/34.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
vector<int> searchRange(vector<int>& nums, int target) {
2+
vector<int> res(2, -1);
3+
if (!binary_search(nums.begin(), nums.end(), target))
4+
return res;
5+
6+
auto iter = lower_bound(nums.begin(), nums.end(), target);
7+
res[0] = iter-nums.begin();
8+
iter = upper_bound(nums.begin(), nums.end(), target);
9+
res[1] = iter-1-nums.begin();
10+
11+
return res;
12+
}

src/62.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
int uniquePaths(int m, int n) {
2+
vector<vector<int>> path(m, vector<int>(n, 0));
3+
4+
return search(0, 0, m, n, path);
5+
}
6+
7+
int search(int p, int q, int m, int n, vector<vector<int>>& path)
8+
{
9+
if (p < m-1 && q < n-1)
10+
{
11+
if (path[p][q] == 0)
12+
{
13+
int t = search(p+1, q, m, n, path) + search(p, q+1, m, n, path);
14+
path[p][q] = t;
15+
16+
return t;
17+
}
18+
else
19+
return path[p][q];
20+
}
21+
else
22+
return 1;
23+
}

src/64.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
int minPathSum(vector<vector<int>>& grid) {
2+
int row = grid.size();
3+
if (row == 0)
4+
return 0;
5+
int col = grid[0].size();
6+
7+
vector<vector<int>> sum(row, vector<int>(col, -1));
8+
return search(0, 0, row, col, grid, sum);
9+
}
10+
11+
int search(int p, int q, int m, int n, const vector<vector<int>>& grid, vector<vector<int>>& sum)
12+
{
13+
if (sum[p][q] == -1)
14+
{
15+
if (p < m-1 && q < n-1)
16+
{
17+
int v1 = search(p+1, q, m, n, grid, sum);
18+
int v2 = search(p, q+1, m, n, grid, sum);
19+
sum[p][q] = v1 < v2 ? v1+grid[p][q] : v2+grid[p][q];
20+
return sum[p][q];
21+
}
22+
else if (p == m-1)
23+
{
24+
int t = 0;
25+
for (int i = q; i < n; ++i)
26+
t += grid[p][i];
27+
sum[p][q] = t;
28+
return t;
29+
}
30+
else
31+
{
32+
int t = 0;
33+
for (int i = p; i < m; ++i)
34+
t += grid[i][q];
35+
sum[p][q] = t;
36+
return t;
37+
}
38+
}
39+
else
40+
return sum[p][q];
41+
}

0 commit comments

Comments
 (0)