Skip to content

Commit a0c16d4

Browse files
committed
添加(0435.无重叠区间.md):增加typescript版本
1 parent 0cfd92f commit a0c16d4

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

problems/0435.无重叠区间.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ func min(a,b int)int{
263263
}
264264
return a
265265
}
266-
```
266+
```
267267

268268
### Javascript:
269269
- 按右边界排序
@@ -306,6 +306,55 @@ var eraseOverlapIntervals = function(intervals) {
306306
}
307307
```
308308

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+
309358

310359
-----------------------
311360
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
 (0)