Skip to content

Commit c58974c

Browse files
authored
Create 2055-plates-between-candles.js
1 parent 6426e97 commit c58974c

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

2055-plates-between-candles.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* @param {string} s
3+
* @param {number[][]} queries
4+
* @return {number[]}
5+
*/
6+
const platesBetweenCandles = function(s, queries) {
7+
const n = s.length,
8+
leftCandlePos = Array(n).fill(-1)
9+
rightCandlePos = Array(n).fill(-1)
10+
candleCnt = Array(n).fill(0)
11+
let pos = -1
12+
for(let i = 0; i < n; i++) {
13+
if(s[i] === '|') pos = i
14+
leftCandlePos[i] = pos
15+
}
16+
pos = -1
17+
for(let i = n - 1; i >= 0; i--) {
18+
if(s[i] === '|') pos = i
19+
rightCandlePos[i] = pos
20+
}
21+
for(let i = 0, cnt = 0; i < n; i++) {
22+
if(s[i] === '|') cnt++
23+
candleCnt[i] = cnt
24+
}
25+
26+
const len = queries.length, res = Array(len).fill(0)
27+
28+
for(let i = 0; i < len; i++) {
29+
const [left, right] = queries[i]
30+
const leftCandle = rightCandlePos[left], rightCandle = leftCandlePos[right]
31+
const delta = rightCandle - leftCandle
32+
if(leftCandle !== -1 && rightCandle !== -1 && delta > 1) {
33+
res[i] = delta + 1 - (candleCnt[rightCandle] - candleCnt[leftCandle] + 1)
34+
}
35+
}
36+
37+
return res
38+
}

0 commit comments

Comments
 (0)