Skip to content

Commit dc463a1

Browse files
authoredAug 12, 2022
Update 2055-plates-between-candles.js
1 parent ce25b57 commit dc463a1

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
 

‎2055-plates-between-candles.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,46 @@ const platesBetweenCandles = function(s, queries) {
3636

3737
return res
3838
}
39+
40+
// another
41+
42+
/**
43+
* @param {string} s
44+
* @param {number[][]} queries
45+
* @return {number[]}
46+
*/
47+
const platesBetweenCandles = function (s, queries) {
48+
const n = s.length
49+
const leftArr = Array(n).fill(-1),
50+
rightArr = Array(n).fill(n),
51+
candleCnt = Array(n).fill(0)
52+
let candle = -1
53+
for (let i = 0; i < n; i++) {
54+
if (s[i] === '|') candle = i
55+
leftArr[i] = candle
56+
}
57+
candle = n
58+
for (let i = n - 1; i >= 0; i--) {
59+
if (s[i] === '|') candle = i
60+
rightArr[i] = candle
61+
}
62+
let cnt = 0
63+
for (let i = 0; i < n; i++) {
64+
if (s[i] === '|') cnt++
65+
candleCnt[i] = cnt
66+
}
67+
// console.log(leftArr, rightArr)
68+
const res = []
69+
for (const [s, e] of queries) {
70+
const l = rightArr[s]
71+
const r = leftArr[e]
72+
const diff = r - l
73+
if (diff > 1) {
74+
const e = r - l + 1 - (candleCnt[r] - candleCnt[l] + 1)
75+
res.push(e)
76+
} else res.push(0)
77+
}
78+
79+
return res
80+
}
81+

0 commit comments

Comments
 (0)