Skip to content

Commit dfcad35

Browse files
authored
Merge pull request #1505 from lhc0506/main
[lhc0506] Week 08 Solutions
2 parents cb8e72a + 0ae4a82 commit dfcad35

File tree

4 files changed

+110
-0
lines changed

4 files changed

+110
-0
lines changed

clone-graph/lhc0506.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* // Definition for a _Node.
3+
* function _Node(val, neighbors) {
4+
* this.val = val === undefined ? 0 : val;
5+
* this.neighbors = neighbors === undefined ? [] : neighbors;
6+
* };
7+
*/
8+
9+
/**
10+
* @param {_Node} node
11+
* @return {_Node}
12+
*/
13+
var cloneGraph = function(node) {
14+
if (!node) return null;
15+
16+
const stack = [node];
17+
const map = new Map();
18+
19+
map.set(node.val, new _Node(node.val));
20+
21+
while (stack.length > 0) {
22+
const currentNode = stack.pop();
23+
24+
for (const neighbor of currentNode.neighbors) {
25+
if (!map.has(neighbor.val)) {
26+
map.set(neighbor.val, new Node(neighbor.val));
27+
stack.push(neighbor);
28+
}
29+
map.get(currentNode.val).neighbors.push(map.get(neighbor.val));
30+
}
31+
32+
}
33+
return map.get(node.val);
34+
};
35+
36+
37+
// 시간복잡도: O(n)
38+
// 공간복잡도: O(n)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* @param {string} s
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
var characterReplacement = function(s, k) {
7+
let start = 0;
8+
let maxFreq = 0;
9+
let result = 0;
10+
const map = new Map();
11+
12+
for (let end = 0; end < s.length; end++) {
13+
const endChar = s[end];
14+
map.set(endChar, 1 + (map.get(endChar) || 0));
15+
16+
maxFreq = Math.max(maxFreq, map.get(endChar));
17+
18+
if (end - start + 1 - maxFreq > k) {
19+
const startChar = s[start];
20+
map.set(startChar, map.get(startChar) - 1);
21+
start++;
22+
23+
}
24+
25+
result = Math.max(result, end - start + 1);
26+
}
27+
28+
return result;
29+
};
30+
31+
// 시간복잡도: O(n)
32+
// 공간복잡도: O(1)

palindromic-substrings/lhc0506.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
6+
var countSubstrings = function(s) {
7+
let count = 0;
8+
for (let i = 0; i < s.length; i++) {
9+
let start = i;
10+
let end = i;
11+
while (start >= 0 && end < s.length && s[start] === s[end]) {
12+
count += 1;
13+
start -= 1;
14+
end += 1;
15+
}
16+
17+
start = i;
18+
end = i + 1;
19+
while (start >= 0 && end < s.length && s[start] === s[end]) {
20+
count += 1;
21+
start -= 1;
22+
end += 1;
23+
}
24+
}
25+
26+
return count;
27+
};
28+
29+
// 시간 복잡도: O(n^2)
30+
// 공간 복잡도: O(1)

reverse-bits/lhc0506.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* @param {number} n - a positive integer
3+
* @return {number} - a positive integer
4+
*/
5+
var reverseBits = function(n) {
6+
return parseInt(n.toString(2).padStart(32, '0').split('').reverse().join(''), 2);
7+
};
8+
9+
// 시간복잡도: O(n)
10+
// 공간복잡도: O(1)

0 commit comments

Comments
 (0)