Skip to content

Commit 417993b

Browse files
authored
Update 2055-plates-between-candles.js
1 parent dc463a1 commit 417993b

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

2055-plates-between-candles.js

+49
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,52 @@
1+
/**
2+
* @param {string} s
3+
* @param {number[][]} queries
4+
* @return {number[]}
5+
*/
6+
const platesBetweenCandles = function (s, queries) {
7+
const candleIdxArr = []
8+
const n = s.length
9+
for(let i = 0; i < n; i++) {
10+
if(s[i] === '|') candleIdxArr.push(i)
11+
}
12+
// console.log(candleIdxArr)
13+
const res = []
14+
for(const [s, e] of queries) {
15+
const l = lower(candleIdxArr, s, e)
16+
const r = upper(candleIdxArr, s ,e)
17+
const tmp = (candleIdxArr[r] - candleIdxArr[l] + 1) - (r - l + 1)
18+
res.push(tmp >= 0 ? tmp : 0)
19+
}
20+
21+
return res
22+
23+
24+
function lower(arr,s,e) {
25+
let l = 0, r = arr.length - 1
26+
while(l < r) {
27+
// console.log('lower',l, r)
28+
const mid = ~~(l + (r - l)/2)
29+
if(arr[mid] < s) l = mid + 1
30+
else r = mid
31+
}
32+
return l
33+
}
34+
35+
function upper(arr,s, e) {
36+
let l = 0, r = arr.length - 1
37+
while(l < r) {
38+
39+
const mid = r - ~~((r - l)/2)
40+
// console.log('upper', l, r, mid, e)
41+
if(arr[mid] > e) r = mid - 1
42+
else l = mid
43+
}
44+
return l
45+
}
46+
}
47+
48+
// another
49+
150
/**
251
* @param {string} s
352
* @param {number[][]} queries

0 commit comments

Comments
 (0)