Skip to content

Commit abb5839

Browse files
authored
[Joo kangsan] 24.11.26 (#111)
* 56 / Merge Intervals / medium / 12m10s * 139 / Word Break / medium / 27m50s * 251 / Kth Largest Element in an Array / medium / 42m50s * 235 / Lowest Common Ancestor of a Binary Search Tree / medium / 32m20s * 1584 / Min Cost to Connect / medium
1 parent 57f025b commit abb5839

File tree

5 files changed

+140
-0
lines changed

5 files changed

+140
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
3+
/**
4+
* @param {string} s
5+
* @param {string[]} wordDict
6+
* @return {boolean}
7+
*/
8+
var wordBreak = function(s, wordDict) {
9+
const memo = new Map();
10+
11+
function dp(str, i = 0) {
12+
if (str.length === 0) return true;
13+
if (i >= wordDict.length) return false;
14+
15+
const key = str + ',' + i;
16+
if (memo.has(key)) return memo.get(key);
17+
18+
let word = wordDict[i];
19+
if (str.slice(0, word.length) === word) {
20+
if (dp(str.slice(word.length), 0)) {
21+
memo.set(key, true);
22+
return true;
23+
}
24+
}
25+
26+
const result = dp(str, i + 1);
27+
memo.set(key, result);
28+
return result;
29+
}
30+
31+
return dp(s);
32+
};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* @param {number[][]} points
3+
* @return {number}
4+
*/
5+
var minCostConnectPoints = function (points) {
6+
const n = points.length;
7+
const visited = new Array(n).fill(false);
8+
const minDist = new Array(n).fill(Infinity);
9+
minDist[0] = 0;
10+
let result = 0;
11+
12+
for (let i = 0; i < n; i++) {
13+
let x = -1;
14+
for (let j = 0; j < n; j++) {
15+
if (!visited[j] && (x === -1 || minDist[j] < minDist[x])) {
16+
x = j;
17+
}
18+
}
19+
20+
visited[x] = true;
21+
result += minDist[x];
22+
23+
for (let k = 0; k < n; k++) {
24+
if (!visited[k]) {
25+
const dist =
26+
Math.abs(points[x][0] - points[k][0]) +
27+
Math.abs(points[x][1] - points[k][1]);
28+
minDist[k] = Math.min(minDist[k], dist);
29+
}
30+
}
31+
}
32+
33+
return result;
34+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
var findKthLargest = function(nums, k) {
7+
let [min, max] = nums.reduce(([min, max], num) =>
8+
[Math.min(min, num), Math.max(max, num)],
9+
[Infinity, -Infinity]
10+
);
11+
12+
const offset = min >= 0 ? 0 : -min;
13+
const count = new Array(max + 1 + offset).fill(0);
14+
15+
for(let num of nums) {
16+
count[num + offset]++;
17+
}
18+
19+
let kthLargest;
20+
for(let i = count.length - 1; i >= 0; i--) {
21+
k -= count[i];
22+
if(k <= 0) {
23+
kthLargest = i - offset;
24+
break;
25+
}
26+
}
27+
28+
return kthLargest;
29+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* function TreeNode(val) {
4+
* this.val = val;
5+
* this.left = this.right = null;
6+
* }
7+
*/
8+
9+
/**
10+
* @param {TreeNode} root
11+
* @param {TreeNode} p
12+
* @param {TreeNode} q
13+
* @return {TreeNode}
14+
*/
15+
16+
var lowestCommonAncestor = function(root, p, q) {
17+
let min = Math.min(p.val, q.val)
18+
let max = Math.max(p.val, q.val)
19+
20+
if(min > root.val) {
21+
return lowestCommonAncestor(root.right, p, q)
22+
} else if(max < root.val) {
23+
return lowestCommonAncestor(root.left, p, q)
24+
} else {
25+
return root
26+
}
27+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number[][]} intervals
3+
* @return {number[][]}
4+
*/
5+
var merge = function (intervals) {
6+
intervals.sort((a, b) => a[0] - b[0]);
7+
8+
for (let i = 1; i < intervals.length; i++) {
9+
if (intervals[i][0] <= intervals[i - 1][1]) {
10+
intervals[i][1] = Math.max(intervals[i][1], intervals[i - 1][1]);
11+
intervals[i][0] = intervals[i - 1][0];
12+
intervals.splice(i - 1, 1);
13+
i--;
14+
}
15+
}
16+
17+
return intervals;
18+
};

0 commit comments

Comments
 (0)