Skip to content

Commit 324e852

Browse files
committed
feat: leetcode contest 298
1 parent 74b68d5 commit 324e852

File tree

4 files changed

+93
-0
lines changed

4 files changed

+93
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @param {number} num
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
const map = {}
7+
var minimumNumbers = function (num, k) {
8+
if (map[`${num}_${k}`] != null) return map[`${num}_${k}`]
9+
// console.log(num, k)
10+
if (num === 0) return 0
11+
if (num < k) return -1
12+
let ans = 1e10
13+
// 枚举最后一个数
14+
for (let i = 1; i <= num; i++) {
15+
if (i % 10 === k) {
16+
const prev = minimumNumbers(num - i, k)
17+
if (prev === -1) continue
18+
else ans = Math.min(ans, prev + 1)
19+
}
20+
}
21+
return map[`${num}_${k}`] = (ans === 1e10 ? -1 : ans)
22+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {string} s
3+
* @return {string}
4+
*/
5+
var greatestLetter = function(s) {
6+
const st = new Set()
7+
for (let i = 0; i < 26; i++) {
8+
const x = String.fromCharCode('a'.charCodeAt(0)+i)
9+
const X = String.fromCharCode('A'.charCodeAt(0)+i)
10+
if (s.includes(x) && s.includes(X)) st.add(i)
11+
}
12+
let ans = '', max = -1
13+
for (const i of st) {
14+
if (i > max) {
15+
max = i
16+
ans = String.fromCharCode('A'.charCodeAt(0)+i)
17+
}
18+
}
19+
return ans
20+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* @param {number} m
3+
* @param {number} n
4+
* @param {number[][]} prices
5+
* @return {number}
6+
*/
7+
const sellingWood = function (m, n, ps) {
8+
const f = Array(m + 1).fill(0).map(() => Array(n + 1).fill(0))
9+
for (const [h, w, p] of ps) {
10+
f[h][w] = p
11+
}
12+
for (let i = 1; i <= m; i++) {
13+
for (let j = 1; j <= n; j++) {
14+
for (let k = 1; k <= i; k++) f[i][j] = Math.max(f[i][j], f[k][j] + f[i - k][j])
15+
for (let k = 1; k <= j; k++) f[i][j] = Math.max(f[i][j], f[i][k] + f[i][j - k])
16+
}
17+
}
18+
return f[m][n]
19+
}
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+
dp[i][j] 以 i 结尾长度为 j 的最小值
7+
dp[i][j] <= k, ans = max(ans, j)
8+
dp[0...i-1][j-1]
9+
*/
10+
const longestSubsequence = function (s, k) {
11+
const n = s.length; const dp = Array(n + 1).fill(0).map(() => Array(n + 1).fill(1e10))
12+
s = ' ' + s
13+
let ans = 0
14+
let min = Array(n + 1).fill(1e10)
15+
min[0] = 0
16+
for (let i = 1; i <= n; i++) {
17+
// 长度为 0 的值都为 0
18+
dp[i][0] = 0
19+
const next_min = [...min]
20+
for (let j = 1; j <= i; j++) {
21+
// for (let l = 0; l < i; l++) {
22+
// dp[i][j] = Math.min(dp[i][j], dp[l][j-1]*2 + Number(s[i]))
23+
// }
24+
// console.log(i, j, dp[i][j])
25+
dp[i][j] = Math.min(dp[i][j], min[j - 1] * 2 + Number(s[i]))
26+
if (dp[i][j] <= k) ans = Math.max(ans, j)
27+
next_min[j] = Math.min(next_min[j], dp[i][j])
28+
}
29+
min = next_min
30+
}
31+
return ans
32+
}

0 commit comments

Comments
 (0)