Skip to content

Commit 8cd59da

Browse files
committed
feat: leetcode contest 291
1 parent b266317 commit 8cd59da

5 files changed

+103
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {string} number
3+
* @param {character} digit
4+
* @return {string}
5+
*/
6+
const removeDigit = function (number, digit) {
7+
const n = number.length
8+
const p = []
9+
for (let i = 0; i < n; i++) {
10+
if (number[i] === digit) {
11+
let tmp = number.slice(0, i) + number.slice(i + 1)
12+
while (tmp[0] === '0') tmp = tmp.slice(1)
13+
p.push(tmp)
14+
}
15+
}
16+
p.sort()
17+
return p[p.length - 1]
18+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* @param {number[]} cards
3+
* @return {number}
4+
*/
5+
const minimumCardPickup = function (cards) {
6+
const h = {}; let ans = 1e10
7+
for (let i = 0; i < cards.length; i++) {
8+
const c = cards[i]
9+
// console.log(i, c, h)
10+
if (h[c] != null) ans = Math.min(ans, i - h[c] + 1)
11+
h[c] = i
12+
}
13+
return ans === 1e10 ? -1 : ans
14+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @param {number} p
5+
* @return {number}
6+
*/
7+
const countDistinct = function (nums, k, p) {
8+
const n = nums.length
9+
const s = new Set(); const P = 13331; const Q = 1e4 + 7; const Q1 = 1e5 + 7; const Q2 = 1e6 + 7
10+
const f = [0]; const g = [1]; const cnt = [0]
11+
const f1 = [0]; const g1 = [1]
12+
const f2 = [0]; const g2 = [1]
13+
for (let i = 1; i <= n; i++) {
14+
f[i] = (f[i - 1] * P + nums[i - 1]) % Q
15+
g[i] = (g[i - 1] * P) % Q
16+
f1[i] = (f1[i - 1] * P + nums[i - 1]) % Q1
17+
g1[i] = (g1[i - 1] * P) % Q1
18+
f2[i] = (f2[i - 1] * P + nums[i - 1]) % Q2
19+
g2[i] = (g2[i - 1] * P) % Q2
20+
cnt[i] = cnt[i - 1] + (nums[i - 1] % p === 0 ? 1 : 0)
21+
}
22+
for (let i = 1; i <= n; i++) {
23+
for (let j = i; j <= n; j++) {
24+
const h = ((f[j] - (f[i - 1] * g[j - i + 1])) % Q + Q) % Q
25+
const h1 = ((f1[j] - (f1[i - 1] * g1[j - i + 1])) % Q1 + Q1) % Q1
26+
const h2 = ((f2[j] - (f2[i - 1] * g2[j - i + 1])) % Q2 + Q2) % Q2
27+
const c = cnt[j] - cnt[i - 1]
28+
if (c <= k) s.add(`${h}_${h1}_${h2}`)
29+
}
30+
}
31+
// console.log(s)
32+
return s.size
33+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @param {number} p
5+
* @return {number}
6+
*/
7+
const countDistinct = function (nums, k, p) {
8+
const n = nums.length
9+
const s = new Set()
10+
for (let i = 0; i < n; i++) {
11+
for (let j = i; j < n; j++) {
12+
let tmp = ''; let cnt = 0
13+
for (let k = i; k <= j; k++) {
14+
tmp += `_${nums[k]}`
15+
cnt += nums[k] % p === 0
16+
}
17+
if (cnt <= k) { s.add(tmp) }
18+
}
19+
}
20+
// console.log(s)
21+
return s.size
22+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
const appealSum = function (s) {
6+
const n = s.length
7+
const h = {}; let cnt = 0
8+
for (let i = 0; i < n; i++) {
9+
let x = i + 1; const y = n - i
10+
if (h[s[i]] != null) x = i - h[s[i]]
11+
cnt += x * y
12+
// console.log(i, s[i], cnt)
13+
h[s[i]] = i
14+
}
15+
return cnt
16+
}

0 commit comments

Comments
 (0)