File tree Expand file tree Collapse file tree 7 files changed +182
-21
lines changed
0200-0299/0278.First Bad Version
0900-0999/0986.Interval List Intersections Expand file tree Collapse file tree 7 files changed +182
-21
lines changed Original file line number Diff line number Diff line change @@ -193,17 +193,17 @@ func firstBadVersion(n int) int {
193
193
194
194
impl Solution {
195
195
pub fn first_bad_version (& self , n : i32 ) -> i32 {
196
- let mut l = 1 ;
197
- let mut r = n ;
198
- while l <= r {
199
- let mid = l + (r - l ) / 2 ;
196
+ let mut left = 1 ;
197
+ let mut right = n ;
198
+ while left < right {
199
+ let mid = left + (right - left ) / 2 ;
200
200
if self . isBadVersion (mid ) {
201
- r = mid - 1
201
+ right = mid ;
202
202
} else {
203
- l = mid + 1
203
+ left = mid + 1 ;
204
204
}
205
205
}
206
- l
206
+ left
207
207
}
208
208
}
209
209
```
Original file line number Diff line number Diff line change @@ -182,17 +182,17 @@ func firstBadVersion(n int) int {
182
182
183
183
impl Solution {
184
184
pub fn first_bad_version (& self , n : i32 ) -> i32 {
185
- let mut l = 1 ;
186
- let mut r = n ;
187
- while l <= r {
188
- let mid = l + (r - l ) / 2 ;
185
+ let mut left = 1 ;
186
+ let mut right = n ;
187
+ while left < right {
188
+ let mid = left + (right - left ) / 2 ;
189
189
if self . isBadVersion (mid ) {
190
- r = mid - 1
190
+ right = mid ;
191
191
} else {
192
- l = mid + 1
192
+ left = mid + 1 ;
193
193
}
194
194
}
195
- l
195
+ left
196
196
}
197
197
}
198
198
```
Original file line number Diff line number Diff line change 4
4
5
5
impl Solution {
6
6
pub fn first_bad_version ( & self , n : i32 ) -> i32 {
7
- let mut l = 1 ;
8
- let mut r = n;
9
- while l <= r {
10
- let mid = l + ( r - l ) / 2 ;
7
+ let mut left = 1 ;
8
+ let mut right = n;
9
+ while left < right {
10
+ let mid = left + ( right - left ) / 2 ;
11
11
if self . isBadVersion ( mid) {
12
- r = mid - 1
12
+ right = mid;
13
13
} else {
14
- l = mid + 1
14
+ left = mid + 1 ;
15
15
}
16
16
}
17
- l
17
+ left
18
18
}
19
19
}
Original file line number Diff line number Diff line change @@ -169,6 +169,63 @@ func min(a, b int) int {
169
169
}
170
170
```
171
171
172
+ ### ** TypeScript**
173
+
174
+ ``` ts
175
+ function intervalIntersection(
176
+ firstList : number [][],
177
+ secondList : number [][],
178
+ ): number [][] {
179
+ const n = firstList .length ;
180
+ const m = secondList .length ;
181
+ const res = [];
182
+ let i = 0 ;
183
+ let j = 0 ;
184
+ while (i < n && j < m ) {
185
+ const start = Math .max (firstList [i ][0 ], secondList [j ][0 ]);
186
+ const end = Math .min (firstList [i ][1 ], secondList [j ][1 ]);
187
+ if (start <= end ) {
188
+ res .push ([start , end ]);
189
+ }
190
+ if (firstList [i ][1 ] < secondList [j ][1 ]) {
191
+ i ++ ;
192
+ } else {
193
+ j ++ ;
194
+ }
195
+ }
196
+ return res ;
197
+ }
198
+ ```
199
+
200
+ ### ** Rust**
201
+
202
+ ``` rust
203
+ impl Solution {
204
+ pub fn interval_intersection (
205
+ first_list : Vec <Vec <i32 >>,
206
+ second_list : Vec <Vec <i32 >>,
207
+ ) -> Vec <Vec <i32 >> {
208
+ let n = first_list . len ();
209
+ let m = second_list . len ();
210
+ let mut res = Vec :: new ();
211
+ let (mut i , mut j ) = (0 , 0 );
212
+ while i < n && j < m {
213
+ let start = first_list [i ][0 ]. max (second_list [j ][0 ]);
214
+ let end = first_list [i ][1 ]. min (second_list [j ][1 ]);
215
+ if start <= end {
216
+ res . push (vec! [start , end ]);
217
+ }
218
+ if first_list [i ][1 ] < second_list [j ][1 ] {
219
+ i += 1 ;
220
+ } else {
221
+ j += 1 ;
222
+ }
223
+ }
224
+ res
225
+ }
226
+ }
227
+ ```
228
+
172
229
### ** ...**
173
230
174
231
```
Original file line number Diff line number Diff line change @@ -143,6 +143,63 @@ func min(a, b int) int {
143
143
}
144
144
```
145
145
146
+ ### ** TypeScript**
147
+
148
+ ``` ts
149
+ function intervalIntersection(
150
+ firstList : number [][],
151
+ secondList : number [][],
152
+ ): number [][] {
153
+ const n = firstList .length ;
154
+ const m = secondList .length ;
155
+ const res = [];
156
+ let i = 0 ;
157
+ let j = 0 ;
158
+ while (i < n && j < m ) {
159
+ const start = Math .max (firstList [i ][0 ], secondList [j ][0 ]);
160
+ const end = Math .min (firstList [i ][1 ], secondList [j ][1 ]);
161
+ if (start <= end ) {
162
+ res .push ([start , end ]);
163
+ }
164
+ if (firstList [i ][1 ] < secondList [j ][1 ]) {
165
+ i ++ ;
166
+ } else {
167
+ j ++ ;
168
+ }
169
+ }
170
+ return res ;
171
+ }
172
+ ```
173
+
174
+ ### ** Rust**
175
+
176
+ ``` rust
177
+ impl Solution {
178
+ pub fn interval_intersection (
179
+ first_list : Vec <Vec <i32 >>,
180
+ second_list : Vec <Vec <i32 >>,
181
+ ) -> Vec <Vec <i32 >> {
182
+ let n = first_list . len ();
183
+ let m = second_list . len ();
184
+ let mut res = Vec :: new ();
185
+ let (mut i , mut j ) = (0 , 0 );
186
+ while i < n && j < m {
187
+ let start = first_list [i ][0 ]. max (second_list [j ][0 ]);
188
+ let end = first_list [i ][1 ]. min (second_list [j ][1 ]);
189
+ if start <= end {
190
+ res . push (vec! [start , end ]);
191
+ }
192
+ if first_list [i ][1 ] < second_list [j ][1 ] {
193
+ i += 1 ;
194
+ } else {
195
+ j += 1 ;
196
+ }
197
+ }
198
+ res
199
+ }
200
+ }
201
+ ```
202
+
146
203
### ** ...**
147
204
148
205
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn interval_intersection (
3
+ first_list : Vec < Vec < i32 > > ,
4
+ second_list : Vec < Vec < i32 > > ,
5
+ ) -> Vec < Vec < i32 > > {
6
+ let n = first_list. len ( ) ;
7
+ let m = second_list. len ( ) ;
8
+ let mut res = Vec :: new ( ) ;
9
+ let ( mut i, mut j) = ( 0 , 0 ) ;
10
+ while i < n && j < m {
11
+ let start = first_list[ i] [ 0 ] . max ( second_list[ j] [ 0 ] ) ;
12
+ let end = first_list[ i] [ 1 ] . min ( second_list[ j] [ 1 ] ) ;
13
+ if start <= end {
14
+ res. push ( vec ! [ start, end] ) ;
15
+ }
16
+ if first_list[ i] [ 1 ] < second_list[ j] [ 1 ] {
17
+ i += 1 ;
18
+ } else {
19
+ j += 1 ;
20
+ }
21
+ }
22
+ res
23
+ }
24
+ }
Original file line number Diff line number Diff line change
1
+ function intervalIntersection (
2
+ firstList : number [ ] [ ] ,
3
+ secondList : number [ ] [ ] ,
4
+ ) : number [ ] [ ] {
5
+ const n = firstList . length ;
6
+ const m = secondList . length ;
7
+ const res = [ ] ;
8
+ let i = 0 ;
9
+ let j = 0 ;
10
+ while ( i < n && j < m ) {
11
+ const start = Math . max ( firstList [ i ] [ 0 ] , secondList [ j ] [ 0 ] ) ;
12
+ const end = Math . min ( firstList [ i ] [ 1 ] , secondList [ j ] [ 1 ] ) ;
13
+ if ( start <= end ) {
14
+ res . push ( [ start , end ] ) ;
15
+ }
16
+ if ( firstList [ i ] [ 1 ] < secondList [ j ] [ 1 ] ) {
17
+ i ++ ;
18
+ } else {
19
+ j ++ ;
20
+ }
21
+ }
22
+ return res ;
23
+ }
You can’t perform that action at this time.
0 commit comments