Skip to content

Commit f255c74

Browse files
authored
Merge pull request neetcode-gh#387 from MarinaPotovichenko/feature/add-js-solutions
feat: added JS solutions of 57, 139, 269, 435
2 parents 053bea4 + 28d0dba commit f255c74

File tree

4 files changed

+117
-0
lines changed

4 files changed

+117
-0
lines changed

javascript/139-Word-Break.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
let wordBreak = function(s, wordDict) {
2+
let dp = new Array(s.length + 1);
3+
dp.fill(false);
4+
dp[s.length] = true;
5+
6+
let word = '';
7+
for(let i = s.length - 1; i >= 0; i--) {
8+
word = s[i] + word;
9+
10+
if(wordDict.includes(word) && i + word.length < dp.length) {
11+
dp[i] = dp[i + word.length];
12+
word = '';
13+
} else {
14+
dp[i] = false;
15+
}
16+
}
17+
18+
return dp[0];
19+
};

javascript/269-Alien-Dictionary.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
let alienOrder = function (words) {
2+
let graph = {};
3+
4+
for (let i = 0; i < words.length; i++) {
5+
for (let j = 0; j < words[i].length; j++) {
6+
graph[words[i][j]] = new Set();
7+
}
8+
}
9+
10+
for (let i = 0; i < words.length - 1; i++) {
11+
let word1 = words[i];
12+
let word2 = words[i + 1];
13+
14+
if (word1.length > word2.length && (word1 + '').startsWith(word2)) {
15+
return "";
16+
}
17+
18+
for (let j = 0; j < Math.min(word1.length, word2.length); j++) {
19+
let c1 = word1[j];
20+
let c2 = word2[j];
21+
22+
if (c1 !== c2) {
23+
graph[c1].add(c2);
24+
break;
25+
}
26+
}
27+
}
28+
29+
let visited = {}; // 'false' = visited, 'true' = current path
30+
let res = [];
31+
32+
function dfs(c) {
33+
if (visited[c]) {
34+
return Boolean(visited[c]);
35+
}
36+
37+
visited[c] = 'true';
38+
for (let nei of graph[c]) {
39+
if (dfs(nei)) {
40+
return true;
41+
}
42+
}
43+
44+
visited[c] = 'false';
45+
res.push(c);
46+
}
47+
48+
Object.keys(graph).forEach(c => {
49+
if (dfs(c)) {
50+
return '';
51+
}
52+
})
53+
54+
return res.reverse().join('');
55+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
let eraseOverlapIntervals = function(intervals) {
2+
intervals = intervals.sort((a, b) => a[0] - b[1]);
3+
4+
let currentEnd = intervals[0][1];
5+
let res = 0;
6+
7+
for(let i = 1; i < intervals.length; i++) {
8+
if(currentEnd > intervals[i][0]) {
9+
res += 1;
10+
currentEnd = Math.min(intervals[i][1], currentEnd);
11+
} else {
12+
currentEnd = intervals[i][1];
13+
}
14+
}
15+
16+
return res;
17+
};

javascript/57-Insert-Interval.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
let insert = function(intervals, newInterval) {
2+
let res = [];
3+
let isAdded = false;
4+
5+
intervals.forEach(int => {
6+
if (int[0] > newInterval[1]) {
7+
if (!isAdded) {
8+
res.push(newInterval);
9+
isAdded = true;
10+
}
11+
12+
res.push(int);
13+
} else if (int[1] < newInterval[0]) {
14+
res.push(int);
15+
} else {
16+
newInterval[0] = Math.min(newInterval[0], int[0]);
17+
newInterval[1] = Math.max(newInterval[1], int[1]);
18+
}
19+
});
20+
21+
if (!isAdded) {
22+
res.push(newInterval);
23+
}
24+
25+
return res;
26+
};

0 commit comments

Comments
 (0)