File tree Expand file tree Collapse file tree 3 files changed +88
-0
lines changed
solution/0400-0499/0436.Find Right Interval Expand file tree Collapse file tree 3 files changed +88
-0
lines changed Original file line number Diff line number Diff line change @@ -174,6 +174,37 @@ func findRightInterval(intervals [][]int) []int {
174
174
}
175
175
```
176
176
177
+ ### ** TypeScript**
178
+
179
+ ``` ts
180
+ function findRightInterval(intervals : number [][]): number [] {
181
+ const n = intervals .length ;
182
+ const starts = Array .from ({ length: n }).map (() => new Array <number >(2 ));
183
+ for (let i = 0 ; i < n ; i ++ ) {
184
+ starts [i ][0 ] = intervals [i ][0 ];
185
+ starts [i ][1 ] = i ;
186
+ }
187
+ starts .sort ((a , b ) => a [0 ] - b [0 ]);
188
+
189
+ return intervals .map (([_ , target ]) => {
190
+ let left = 0 ;
191
+ let right = n ;
192
+ while (left < right ) {
193
+ const mid = (left + right ) >>> 1 ;
194
+ if (starts [mid ][0 ] < target ) {
195
+ left = mid + 1 ;
196
+ } else {
197
+ right = mid ;
198
+ }
199
+ }
200
+ if (left >= n ) {
201
+ return - 1 ;
202
+ }
203
+ return starts [left ][1 ];
204
+ });
205
+ }
206
+ ```
207
+
177
208
### ** ...**
178
209
179
210
```
Original file line number Diff line number Diff line change @@ -165,6 +165,37 @@ func findRightInterval(intervals [][]int) []int {
165
165
}
166
166
```
167
167
168
+ ### ** TypeScript**
169
+
170
+ ``` ts
171
+ function findRightInterval(intervals : number [][]): number [] {
172
+ const n = intervals .length ;
173
+ const starts = Array .from ({ length: n }).map (() => new Array <number >(2 ));
174
+ for (let i = 0 ; i < n ; i ++ ) {
175
+ starts [i ][0 ] = intervals [i ][0 ];
176
+ starts [i ][1 ] = i ;
177
+ }
178
+ starts .sort ((a , b ) => a [0 ] - b [0 ]);
179
+
180
+ return intervals .map (([_ , target ]) => {
181
+ let left = 0 ;
182
+ let right = n ;
183
+ while (left < right ) {
184
+ const mid = (left + right ) >>> 1 ;
185
+ if (starts [mid ][0 ] < target ) {
186
+ left = mid + 1 ;
187
+ } else {
188
+ right = mid ;
189
+ }
190
+ }
191
+ if (left >= n ) {
192
+ return - 1 ;
193
+ }
194
+ return starts [left ][1 ];
195
+ });
196
+ }
197
+ ```
198
+
168
199
### ** ...**
169
200
170
201
```
Original file line number Diff line number Diff line change
1
+ function findRightInterval ( intervals : number [ ] [ ] ) : number [ ] {
2
+ const n = intervals . length ;
3
+ const starts = Array . from ( { length : n } ) . map ( ( ) => new Array < number > ( 2 ) ) ;
4
+ for ( let i = 0 ; i < n ; i ++ ) {
5
+ starts [ i ] [ 0 ] = intervals [ i ] [ 0 ] ;
6
+ starts [ i ] [ 1 ] = i ;
7
+ }
8
+ starts . sort ( ( a , b ) => a [ 0 ] - b [ 0 ] ) ;
9
+
10
+ return intervals . map ( ( [ _ , target ] ) => {
11
+ let left = 0 ;
12
+ let right = n ;
13
+ while ( left < right ) {
14
+ const mid = ( left + right ) >>> 1 ;
15
+ if ( starts [ mid ] [ 0 ] < target ) {
16
+ left = mid + 1 ;
17
+ } else {
18
+ right = mid ;
19
+ }
20
+ }
21
+ if ( left >= n ) {
22
+ return - 1 ;
23
+ }
24
+ return starts [ left ] [ 1 ] ;
25
+ } ) ;
26
+ }
You can’t perform that action at this time.
0 commit comments