Skip to content

Commit 992376d

Browse files
authored
Merge pull request #959 from gwbaik9717/main
[ganu] Week 8
2 parents a747d1f + 2ca4b36 commit 992376d

File tree

4 files changed

+142
-0
lines changed

4 files changed

+142
-0
lines changed

clone-graph/gwbaik9717.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// v: len(vertexes), e: len(edges)
2+
// Time complexity: O(v + e)
3+
// Space complexity: O(v + e)
4+
5+
/**
6+
* // Definition for a _Node.
7+
* function _Node(val, neighbors) {
8+
* this.val = val === undefined ? 0 : val;
9+
* this.neighbors = neighbors === undefined ? [] : neighbors;
10+
* };
11+
*/
12+
13+
/**
14+
* @param {_Node} node
15+
* @return {_Node}
16+
*/
17+
var cloneGraph = function (node) {
18+
const nodes = Array.from({ length: 101 }, (_, i) => null);
19+
20+
const dfs = (node) => {
21+
if (!node) {
22+
return;
23+
}
24+
25+
if (nodes[node.val]) {
26+
return nodes[node.val];
27+
}
28+
29+
const newNode = new _Node(node.val);
30+
nodes[node.val] = newNode;
31+
32+
for (const neighbor of node.neighbors) {
33+
const cloned = dfs(neighbor);
34+
newNode.neighbors.push(cloned);
35+
}
36+
37+
return newNode;
38+
};
39+
40+
dfs(node);
41+
42+
return nodes[1];
43+
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// n: len(text1), m: len(text2)
2+
// Time complexity: O(n * m)
3+
// Space complexity: O(n * m)
4+
5+
/**
6+
* @param {string} text1
7+
* @param {string} text2
8+
* @return {number}
9+
*/
10+
var longestCommonSubsequence = function (text1, text2) {
11+
const n = text1.length;
12+
const m = text2.length;
13+
14+
const dp = Array.from({ length: n + 1 }, () =>
15+
Array.from({ length: m + 1 }, () => 0)
16+
);
17+
18+
for (let i = 1; i <= n; i++) {
19+
for (let j = 1; j <= m; j++) {
20+
if (text1[i - 1] === text2[j - 1]) {
21+
dp[i][j] = dp[i - 1][j - 1] + 1;
22+
continue;
23+
}
24+
25+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
26+
}
27+
}
28+
29+
return dp.at(-1).at(-1);
30+
};
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(1)
3+
4+
/**
5+
* @param {string} s
6+
* @param {number} k
7+
* @return {number}
8+
*/
9+
var characterReplacement = function (s, k) {
10+
let i = 0;
11+
let j = 0;
12+
13+
const counter = new Map();
14+
counter.set(s[i], 1);
15+
16+
let answer = 1;
17+
18+
const getMaxCount = () => {
19+
let maxCount = 0;
20+
21+
for (const [key, value] of counter) {
22+
maxCount = Math.max(maxCount, value);
23+
}
24+
25+
return maxCount;
26+
};
27+
28+
while (true) {
29+
if (s.length - i <= answer) {
30+
break;
31+
}
32+
33+
const maxCount = getMaxCount();
34+
const totalCount = j - i + 1;
35+
36+
if (totalCount - maxCount <= k) {
37+
j++;
38+
counter.set(s[j], (counter.get(s[j]) || 0) + 1);
39+
answer = Math.max(totalCount, answer);
40+
continue;
41+
}
42+
43+
counter.set(s[i], counter.get(s[i]) - 1);
44+
if (counter.get(s[i]) === 0) {
45+
counter.delete(s[i]);
46+
}
47+
48+
i++;
49+
}
50+
51+
return answer;
52+
};

number-of-1-bits/gwbaik9717.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Time complexity: O(logn)
2+
// Space complexity: O(1)
3+
4+
function hammingWeight(n) {
5+
let answer = 1;
6+
let current = n;
7+
8+
while (current > 1) {
9+
if (current % 2 !== 0) {
10+
answer++;
11+
}
12+
13+
current = Math.floor(current / 2);
14+
}
15+
16+
return answer;
17+
}

0 commit comments

Comments
 (0)