1
// time O(N + M) Space O(N) N = s.length M = query.length2
var platesBetweenCandles = function (s, queries) {3
let platPreFixSum = [...Array(s.length + 1)];4
let leftViewCandle = [...Array(s.length + 1)];5
let rightViewCandle = [...Array(s.length + 1)];8
leftViewCandle[0] = -1;9
rightViewCandle[s.length] = -1;11
for (let i = 1; i <= s.length; i++) {13
s[i - 1] == "*" ? platPreFixSum[i - 1] + 1 : platPreFixSum[i - 1];14
leftViewCandle[i] = s[i - 1] == "|" ? i - 1 : leftViewCandle[i - 1];15
rightViewCandle[s.length - i] =16
s[s.length - i] == "|" ? s.length - i : rightViewCandle[s.length - i + 1];21
queries.forEach(([left, right]) => {23
rightViewCandle[left] >= 0 &&24
leftViewCandle[right + 1] >= 0 &&25
rightViewCandle[left] < leftViewCandle[right + 1]28
platPreFixSum[leftViewCandle[right + 1]] -29
platPreFixSum[rightViewCandle[left]]