@@ -264,7 +264,7 @@ func min(a,b int)int{
264264 }
265265 return a
266266}
267- ```
267+ ```
268268
269269### Javascript:
270270- 按右边界排序
@@ -307,6 +307,55 @@ var eraseOverlapIntervals = function(intervals) {
307307}
308308```
309309
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+
310359
311360-----------------------
312361<div align =" center " ><img src =https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width =500 > </img ></div >
0 commit comments