File tree 1 file changed +38
-0
lines changed
1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments