Skip to content

Commit e419d0a

Browse files
committed
feat: add ts solution to lc problem: No.0436
No.0436.Find Right Interval
1 parent 4eb8755 commit e419d0a

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

solution/0400-0499/0436.Find Right Interval/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,37 @@ func findRightInterval(intervals [][]int) []int {
174174
}
175175
```
176176

177+
### **TypeScript**
178+
179+
```ts
180+
function findRightInterval(intervals: number[][]): number[] {
181+
const n = intervals.length;
182+
const starts = Array.from({ length: n }).map(() => new Array<number>(2));
183+
for (let i = 0; i < n; i++) {
184+
starts[i][0] = intervals[i][0];
185+
starts[i][1] = i;
186+
}
187+
starts.sort((a, b) => a[0] - b[0]);
188+
189+
return intervals.map(([_, target]) => {
190+
let left = 0;
191+
let right = n;
192+
while (left < right) {
193+
const mid = (left + right) >>> 1;
194+
if (starts[mid][0] < target) {
195+
left = mid + 1;
196+
} else {
197+
right = mid;
198+
}
199+
}
200+
if (left >= n) {
201+
return -1;
202+
}
203+
return starts[left][1];
204+
});
205+
}
206+
```
207+
177208
### **...**
178209

179210
```

solution/0400-0499/0436.Find Right Interval/README_EN.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,37 @@ func findRightInterval(intervals [][]int) []int {
165165
}
166166
```
167167

168+
### **TypeScript**
169+
170+
```ts
171+
function findRightInterval(intervals: number[][]): number[] {
172+
const n = intervals.length;
173+
const starts = Array.from({ length: n }).map(() => new Array<number>(2));
174+
for (let i = 0; i < n; i++) {
175+
starts[i][0] = intervals[i][0];
176+
starts[i][1] = i;
177+
}
178+
starts.sort((a, b) => a[0] - b[0]);
179+
180+
return intervals.map(([_, target]) => {
181+
let left = 0;
182+
let right = n;
183+
while (left < right) {
184+
const mid = (left + right) >>> 1;
185+
if (starts[mid][0] < target) {
186+
left = mid + 1;
187+
} else {
188+
right = mid;
189+
}
190+
}
191+
if (left >= n) {
192+
return -1;
193+
}
194+
return starts[left][1];
195+
});
196+
}
197+
```
198+
168199
### **...**
169200

170201
```
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function findRightInterval(intervals: number[][]): number[] {
2+
const n = intervals.length;
3+
const starts = Array.from({ length: n }).map(() => new Array<number>(2));
4+
for (let i = 0; i < n; i++) {
5+
starts[i][0] = intervals[i][0];
6+
starts[i][1] = i;
7+
}
8+
starts.sort((a, b) => a[0] - b[0]);
9+
10+
return intervals.map(([_, target]) => {
11+
let left = 0;
12+
let right = n;
13+
while (left < right) {
14+
const mid = (left + right) >>> 1;
15+
if (starts[mid][0] < target) {
16+
left = mid + 1;
17+
} else {
18+
right = mid;
19+
}
20+
}
21+
if (left >= n) {
22+
return -1;
23+
}
24+
return starts[left][1];
25+
});
26+
}

0 commit comments

Comments
 (0)