Skip to content

Commit c424ad3

Browse files
authored
[Berrnuda] 24.11.26 (#105)
* 150 / Evaluate Reverse Polish Notation / Meium / 12m 01s * 56 / Merge Intervals / Medium / 12m 58s * 235 / Lowest Common Ancestor of a Binary Search Tree / Medium / 14m 45s * 139 / Word Break / Medium / 18m 22s * 215 / Kth Largest Element in an Array / Medium / 20m 19s
1 parent 26edb27 commit c424ad3

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

berrnuda/10week/139_Word_Break.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {string} s
3+
* @param {string[]} wordDict
4+
* @return {boolean}
5+
*/
6+
var wordBreak = function (s, wordDict) {
7+
const wordSet = new Set(wordDict);
8+
const dp = new Array(s.length + 1).fill(false);
9+
10+
dp[0] = true;
11+
12+
for (let i = 1; i <= s.length; i++) {
13+
for (let word of wordSet) {
14+
if (
15+
i >= word.length &&
16+
dp[i - word.length] &&
17+
s.slice(i - word.length, i) === word
18+
) {
19+
dp[i] = true;
20+
break;
21+
}
22+
}
23+
}
24+
25+
return dp[s.length];
26+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
var findKthLargest = function (nums, k) {
7+
const minPriQue = new MinPriorityQueue();
8+
for (let i = 0; i < nums.length; i++) {
9+
minPriQue.enqueue(nums[i]);
10+
if (minPriQue.size() > k) {
11+
minPriQue.dequeue();
12+
}
13+
}
14+
return minPriQue.front().element;
15+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
var lowestCommonAncestor = function (root, p, q) {
16+
while (root) {
17+
if (p.val < root.val && q.val < root.val) {
18+
root = root.left;
19+
} else if (p.val > root.val && q.val > root.val) {
20+
root = root.right;
21+
} else {
22+
return root;
23+
}
24+
}
25+
return null;
26+
};
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {number[][]} intervals
3+
* @return {number[][]}
4+
*/
5+
var merge = function (intervals) {
6+
let n = intervals.length;
7+
8+
intervals.sort((a, b) => a[0] - b[0]);
9+
10+
let result = [];
11+
let cur = intervals[0];
12+
13+
for (let i = 1; i < n; i++) {
14+
if (cur[1] >= intervals[i][0]) cur[1] = Math.max(cur[1], intervals[i][1]);
15+
else {
16+
result.push(cur);
17+
cur = intervals[i];
18+
}
19+
}
20+
21+
result.push(cur);
22+
23+
return result;
24+
};

0 commit comments

Comments
 (0)