Skip to content

Commit 59b0735

Browse files
authoredOct 7, 2023
feat: add ts solutions to lcp problems: No.11,12 (doocs#1756)
* LCP 11.期望个数统计 * LCP 12.小张刷题计划
1 parent df1a0af commit 59b0735

File tree

4 files changed

+74
-0
lines changed

4 files changed

+74
-0
lines changed
 

‎lcp/LCP 11. 期望个数统计/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,15 @@ func expectNumber(scores []int) int {
111111
}
112112
```
113113

114+
### **TypeScript**
115+
116+
```ts
117+
function expectNumber(scores: number[]): number {
118+
const s: Set<number> = new Set<number>(scores);
119+
return s.size;
120+
}
121+
```
122+
114123
### **...**
115124

116125
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
function expectNumber(scores: number[]): number {
2+
const s: Set<number> = new Set<number>(scores);
3+
return s.size;
4+
}

‎lcp/LCP 12. 小张刷题计划/README.md

+33
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,39 @@ func max(a, b int) int {
186186
}
187187
```
188188

189+
### **TypeScript**
190+
191+
```ts
192+
function minTime(time: number[], m: number): number {
193+
let left = 0;
194+
let right = time.reduce((a, b) => a + b);
195+
const check = (t: number): boolean => {
196+
let s = 0;
197+
let mx = 0;
198+
let d = 1;
199+
for (const x of time) {
200+
s += x;
201+
mx = Math.max(mx, x);
202+
if (s - mx > t) {
203+
s = x;
204+
mx = x;
205+
d++;
206+
}
207+
}
208+
return d <= m;
209+
};
210+
while (left < right) {
211+
const mid = (left + right) >> 1;
212+
if (check(mid)) {
213+
right = mid;
214+
} else {
215+
left = mid + 1;
216+
}
217+
}
218+
return left;
219+
}
220+
```
221+
189222
### **...**
190223

191224
```
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
function minTime(time: number[], m: number): number {
2+
let left = 0;
3+
let right = time.reduce((a, b) => a + b);
4+
const check = (t: number): boolean => {
5+
let s = 0;
6+
let mx = 0;
7+
let d = 1;
8+
for (const x of time) {
9+
s += x;
10+
mx = Math.max(mx, x);
11+
if (s - mx > t) {
12+
s = x;
13+
mx = x;
14+
d++;
15+
}
16+
}
17+
return d <= m;
18+
};
19+
while (left < right) {
20+
const mid = (left + right) >> 1;
21+
if (check(mid)) {
22+
right = mid;
23+
} else {
24+
left = mid + 1;
25+
}
26+
}
27+
return left;
28+
}

0 commit comments

Comments
 (0)