Skip to content

Commit 9d57afb

Browse files
committed
feat: leetcode contest 308
1 parent 9c98310 commit 9d57afb

4 files changed

+115
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number[]} queries
4+
* @return {number[]}
5+
*/
6+
const answerQueries = function (nums, queries) {
7+
const n = nums.length; const m = queries.length
8+
const sum = [0]
9+
nums.sort((a, b) => a - b)
10+
for (let i = 1; i <= n; i++) sum[i] = sum[i - 1] + nums[i - 1]
11+
return queries.map(q => {
12+
for (let i = 0; i <= n; i++) {
13+
if (sum[i] > q) return i - 1
14+
}
15+
return n
16+
})
17+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* @param {string} s
3+
* @return {string}
4+
*/
5+
const removeStars = function (s) {
6+
const t = []
7+
for (const ch of s) {
8+
if (ch === '*' && t.length) t.pop()
9+
else t.push(ch)
10+
}
11+
return t.join('')
12+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* @param {string[]} garbage
3+
* @param {number[]} travel
4+
* @return {number}
5+
*/
6+
const garbageCollection = function (g, t) {
7+
const s = 'PGM'
8+
const idx = Array(3).fill(0)
9+
const n = g.length
10+
for (let k = 0; k < 3; k++) {
11+
const ch = s[k]
12+
for (let i = 0; i < n; i++) {
13+
if (g[i].includes(ch)) idx[k] = i + 1
14+
}
15+
}
16+
let ans = 0; const sum = [0]; const s1 = []
17+
for (let i = 1; i < n; i++) {
18+
sum[i] = sum[i - 1] + t[i - 1]
19+
}
20+
const cnt = (s, ch) => {
21+
let ans = 0
22+
for (const c of s) ans += ch === c
23+
return ans
24+
}
25+
for (let k = 0; k < 3; k++) {
26+
s1[k] = [0]
27+
for (let i = 1; i <= n; i++) {
28+
s1[k][i] = s1[k][i - 1] + cnt(g[i - 1], s[k])
29+
}
30+
}
31+
for (let k = 0; k < 3; k++) {
32+
if (idx[k] > 0) {
33+
ans += s1[k][idx[k]] + sum[idx[k] - 1]
34+
}
35+
}
36+
return ans
37+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* @param {number} k
3+
* @param {number[][]} rowConditions
4+
* @param {number[][]} colConditions
5+
* @return {number[][]}
6+
*/
7+
const buildMatrix = function (k, rc, cc) {
8+
const n = rc.length; const m = cc.length
9+
10+
const get = (rc) => {
11+
const e = Array(k + 1).fill(0).map(() => [])
12+
const deg = Array(k + 1).fill(0)
13+
for (const [a, b] of rc) {
14+
e[a].push(b)
15+
deg[b]++
16+
}
17+
const q = []
18+
for (let i = 1; i <= k; i++) {
19+
if (deg[i] === 0) q.push(i)
20+
}
21+
const r = []
22+
while (q.length) {
23+
const x = q.shift()
24+
r.push(x)
25+
for (const y of e[x]) {
26+
if (--deg[y] === 0) {
27+
q.push(y)
28+
}
29+
}
30+
}
31+
return r.length === k ? r : false
32+
}
33+
34+
const r = get(rc)
35+
if (!r) return []
36+
37+
const c = get(cc)
38+
if (!c) return []
39+
40+
const ans = Array(k).fill(0).map(() => Array(k).fill(0))
41+
for (let i = 0; i < k; i++) {
42+
for (let j = 0; j < k; j++) {
43+
if (r[i] === c[j]) {
44+
ans[i][j] = r[i]
45+
}
46+
}
47+
}
48+
return ans
49+
}

0 commit comments

Comments
 (0)