File tree Expand file tree Collapse file tree 3 files changed +36
-1
lines changed
range-sum-query-2d-mutable Expand file tree Collapse file tree 3 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,8 @@ leetcode 测试
10
10
11
11
##### 包含的内容如下
12
12
13
+ https://leetcode.cn/problems/rank-from-stream-lcci/
14
+
13
15
https://leetcode.cn/problems/minimum-cost-to-hire-k-workers/
14
16
15
17
https://leetcode.cn/problems/number-of-closed-islands/
Original file line number Diff line number Diff line change @@ -41,6 +41,6 @@ export default class NumMatrix {
41
41
return sum ;
42
42
}
43
43
}
44
- function lowbit ( a : number ) {
44
+ export function lowbit ( a : number ) {
45
45
return a & - a ;
46
46
}
Original file line number Diff line number Diff line change
1
+ export default class StreamRank {
2
+ #bit = new BinaryIndexTree ( 50002 ) ;
3
+ constructor ( ) { }
4
+
5
+ track ( x : number ) : void {
6
+ this . #bit. change ( x + 1 , 1 ) ;
7
+ }
8
+
9
+ getRankOfNumber ( x : number ) : number {
10
+ return this . #bit. query ( x + 1 ) ;
11
+ }
12
+ }
13
+ export class BinaryIndexTree {
14
+ static lowbit ( x : number ) {
15
+ return x & - x ;
16
+ }
17
+ #tree: number [ ] ;
18
+ constructor ( public size : number ) {
19
+ this . #tree = Array ( size ) . fill ( 0 ) ;
20
+ }
21
+ change ( i : number , x : number ) {
22
+ for ( let p = i ; p < this . size ; p += BinaryIndexTree . lowbit ( p ) ) {
23
+ this . #tree[ p ] += x ;
24
+ }
25
+ }
26
+ query ( n : number ) {
27
+ let ans = 0 ;
28
+ for ( let p = n ; p > 0 ; p -= BinaryIndexTree . lowbit ( p ) ) {
29
+ ans += this . #tree[ p ] ;
30
+ }
31
+ return ans ;
32
+ }
33
+ }
You can’t perform that action at this time.
0 commit comments