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