File tree 2 files changed +44
-0
lines changed
2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change 346
346
433|[ Minimum Genetic Mutation] ( ./0433-minimum-genetic-mutation.js ) |Medium|
347
347
434|[ Number of Segments in a String] ( ./0434-number-of-segments-in-a-string.js ) |Easy|
348
348
435|[ Non-overlapping Intervals] ( ./0435-non-overlapping-intervals.js ) |Medium|
349
+ 436|[ Find Right Interval] ( ./0436-find-right-interval.js ) |Medium|
349
350
437|[ Path Sum III] ( ./0437-path-sum-iii.js ) |Medium|
350
351
438|[ Find All Anagrams in a String] ( ./0438-find-all-anagrams-in-a-string.js ) |Medium|
351
352
441|[ Arranging Coins] ( ./0441-arranging-coins.js ) |Easy|
Original file line number Diff line number Diff line change
1
+ /**
2
+ * 436. Find Right Interval
3
+ * https://leetcode.com/problems/find-right-interval/
4
+ * Difficulty: Medium
5
+ *
6
+ * You are given an array of intervals, where intervals[i] = [starti, endi] and each
7
+ * starti is unique.
8
+ *
9
+ * The right interval for an interval i is an interval j such that startj >= endi and
10
+ * startj is minimized. Note that i may equal j.
11
+ *
12
+ * Return an array of right interval indices for each interval i. If no right interval
13
+ * exists for interval i, then put -1 at index i.
14
+ */
15
+
16
+ /**
17
+ * @param {number[][] } intervals
18
+ * @return {number[] }
19
+ */
20
+ var findRightInterval = function ( intervals ) {
21
+ const lookup = intervals . map ( ( [ start ] , i ) => [ start , i ] )
22
+ . sort ( ( a , b ) => a [ 0 ] - b [ 0 ] ) ;
23
+ const result = new Array ( intervals . length ) ;
24
+
25
+ for ( let i = 0 ; i < intervals . length ; i ++ ) {
26
+ const target = intervals [ i ] [ 1 ] ;
27
+ let left = 0 ;
28
+ let right = lookup . length - 1 ;
29
+
30
+ while ( left <= right ) {
31
+ const middle = Math . floor ( ( left + right ) / 2 ) ;
32
+ if ( lookup [ middle ] [ 0 ] >= target ) {
33
+ right = middle - 1 ;
34
+ } else {
35
+ left = middle + 1 ;
36
+ }
37
+ }
38
+
39
+ result [ i ] = left < lookup . length ? lookup [ left ] [ 1 ] : - 1 ;
40
+ }
41
+
42
+ return result ;
43
+ } ;
You can’t perform that action at this time.
0 commit comments