Skip to content

Commit 51986fb

Browse files
authored
Merge pull request #2242 from ys-han00/main
[ys-han00] WEEK 08 solutions
2 parents 8887013 + a9e8c5f commit 51986fb

5 files changed

Lines changed: 152 additions & 0 deletions

File tree

clone-graph/ys-han00.cpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
// Definition for a Node.
3+
class Node {
4+
public:
5+
int val;
6+
vector<Node*> neighbors;
7+
Node() {
8+
val = 0;
9+
neighbors = vector<Node*>();
10+
}
11+
Node(int _val) {
12+
val = _val;
13+
neighbors = vector<Node*>();
14+
}
15+
Node(int _val, vector<Node*> _neighbors) {
16+
val = _val;
17+
neighbors = _neighbors;
18+
}
19+
};
20+
*/
21+
22+
class Solution {
23+
public:
24+
Node* cloneGraph(Node* node) {
25+
if(!node)
26+
return nullptr;
27+
28+
29+
Node* clone = new Node(node->val);
30+
map<Node*, Node*> clones;
31+
queue<Node*> que;
32+
33+
clones[node] = clone;
34+
que.push(node);
35+
36+
while(!que.empty()) {
37+
node = que.front();
38+
que.pop();
39+
40+
for(auto neigh : node->neighbors) {
41+
if(clones.find(neigh) == clones.end()) {
42+
que.push(neigh);
43+
clones[neigh] = new Node(neigh->val);
44+
}
45+
clones[node]->neighbors.push_back(clones[neigh]);
46+
}
47+
}
48+
49+
return clone;
50+
}
51+
};
52+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
int longestCommonSubsequence(string text1, string text2) {
4+
int n = text1.size(), m = text2.size();
5+
vector<vector<int>> dp(n, vector<int> (m, 0));
6+
7+
for(int i = 0; i < n ; i++) {
8+
for(int j = 0; j < m; j++) {
9+
dp[i][j] = max((i == 0 ? 0 : dp[i - 1][j]), (j == 0 ? 0 : dp[i][j - 1]));
10+
if(text1[i] == text2[j])
11+
dp[i][j] = (i == 0 || j == 0 ? 0 : dp[i - 1][j - 1]) + 1;
12+
}
13+
}
14+
15+
return dp[n - 1][m - 1];
16+
}
17+
};
18+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
int characterReplacement(string s, int k) {
4+
int left = 0, right = 0, ans = 0;
5+
int maxi_cnt = 0;
6+
map<char, int> cnt;
7+
8+
while(left < s.size() && right < s.size()) {
9+
cnt[s[right]]++;
10+
maxi_cnt = max(maxi_cnt, cnt[s[right]]);
11+
right++;
12+
13+
if(right - left - maxi_cnt <= k)
14+
ans = max(ans, right - left);
15+
else
16+
cnt[s[left++]]--;
17+
}
18+
19+
return ans;
20+
}
21+
};
22+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public:
3+
int countSubstrings(string s) {
4+
int ans = 0, n = s.size();
5+
for(int i = 0; i < n; i++) {
6+
int left = i, right = i;
7+
while(left >= 0 && right < n && s[left] == s[right]) {
8+
ans++;
9+
left--;
10+
right++;
11+
}
12+
13+
left = i, right = i + 1;
14+
while(left >= 0 && right < n && s[left] == s[right]) {
15+
ans++;
16+
left--;
17+
right++;
18+
}
19+
}
20+
21+
return ans;
22+
}
23+
};
24+

reverse-bits/ys-han00.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// class Solution {
2+
// public:
3+
// int reverseBits(int n) {
4+
// string bits = "";
5+
6+
// while(n) {
7+
// bits += (n % 2) + '0';
8+
// n /= 2;
9+
// }
10+
11+
// while(bits.size() < 32)
12+
// bits += '0';
13+
14+
// int ans = 0, d = 1;
15+
// for(int i = 31; i >= 0; i--) {
16+
// ans += d * (bits[i] - '0');
17+
// d <<= 1;
18+
// }
19+
20+
// return ans;
21+
// }
22+
// };
23+
24+
class Solution {
25+
public:
26+
int reverseBits(int n) {
27+
int ans = 0;
28+
for(int i = 0; i < 32; i++) {
29+
ans <<= 1;
30+
ans |= (n & 1);
31+
n >>= 1;
32+
}
33+
return ans;
34+
}
35+
};
36+

0 commit comments

Comments
 (0)