@@ -263,7 +263,7 @@ func min(a,b int)int{
263
263
}
264
264
return a
265
265
}
266
- ```
266
+ ```
267
267
268
268
### Javascript:
269
269
- 按右边界排序
@@ -306,6 +306,55 @@ var eraseOverlapIntervals = function(intervals) {
306
306
}
307
307
```
308
308
309
+ ### TypeScript
310
+
311
+ > 按右边界排序,从左往右遍历
312
+
313
+ ```typescript
314
+ function eraseOverlapIntervals (intervals: number[ ] [ ] ): number {
315
+ const length = intervals.length;
316
+ if (length === 0) return 0;
317
+ intervals.sort((a, b) => a[ 1] - b[ 1] );
318
+ let right: number = intervals[ 0] [ 1 ] ;
319
+ let count: number = 1;
320
+ for (let i = 1; i < length; i++) {
321
+ if (intervals[ i] [ 0 ] >= right) {
322
+ count++;
323
+ right = intervals[ i] [ 1 ] ;
324
+ }
325
+ }
326
+ return length - count;
327
+ };
328
+ ```
329
+
330
+ > 按左边界排序,从左往右遍历
331
+
332
+ ```typescript
333
+ function eraseOverlapIntervals(intervals: number[][]): number {
334
+ if (intervals.length === 0) return 0;
335
+ intervals.sort((a, b) => a[0] - b[0]);
336
+ let right: number = intervals[0][1];
337
+ let tempInterval: number[];
338
+ let resCount: number = 0;
339
+ for (let i = 1, length = intervals.length; i < length; i++) {
340
+ tempInterval = intervals[i];
341
+ if (tempInterval[0] >= right) {
342
+ // 未重叠
343
+ right = tempInterval[1];
344
+ } else {
345
+ // 有重叠,移除当前interval和前一个interval中右边界更大的那个
346
+ right = Math.min(right, tempInterval[1]);
347
+ resCount++;
348
+ }
349
+ }
350
+ return resCount;
351
+ };
352
+ ```
353
+
354
+
355
+
356
+
357
+
309
358
310
359
-----------------------
311
360
<div align =" center " ><img src =https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width =500 > </img ></div >
0 commit comments