Skip to content

Commit f891629

Browse files
committed
feat: add solutions to lc problem: No.1626
No.1626.Best Team With No Conflicts
1 parent d5bd16a commit f891629

File tree

6 files changed

+62
-13
lines changed

6 files changed

+62
-13
lines changed

solution/0800-0899/0837.New 21 Game/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ dfs(i + 1) + (dfs(i + 1) - dfs(i + maxPts + 1)) / maxPts, & i < k - 1
127127
\end{aligned}
128128
$$
129129

130-
时间复杂度 $O(k)$,空间复杂度 $O(k)$。其中 $k$ 为最大分数。
130+
时间复杂度 $O(k + maxPts)$,空间复杂度 $O(k + maxPts)$。其中 $k$ 为最大分数。
131131

132132
**方法二:动态规划**
133133

@@ -141,7 +141,7 @@ $$
141141

142142
当 $i \lt k - 1$ 时,有 $f[i] = f[i + 1] + (f[i + 1] - f[i + maxPts + 1]) / maxPts$。
143143

144-
时间复杂度 $O(k)$,空间复杂度 $O(k)$。其中 $k$ 为最大分数。
144+
时间复杂度 $O(k + maxPts)$,空间复杂度 $O(k + maxPts)$。其中 $k$ 为最大分数。
145145

146146
<!-- tabs:start -->
147147

solution/1600-1699/1601.Maximum Number of Achievable Transfer Requests/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@
6969

7070
我们注意到,换楼请求列表长度不超过 $16$,因此我们可以使用二进制枚举的方法枚举所有的换楼请求列表。具体地,我们可以使用一个长度为 $16$ 的二进制数来表示一种换楼请求列表,其中第 $i$ 位为 $1$ 表示第 $i$ 个换楼请求被选中,为 $0$ 表示第 $i$ 个换楼请求不被选中。
7171

72-
我们在 $[1, 2^{16})$ 的范围内枚举所有的二进制数,对于每个二进制数 $mask$,我们先算出它的二进制表示中有多少个 $1$,记为 $cnt$,如果 $cnt$ 比当前答案 $ans$ 大,那么我们再判断 $mask$ 是否是一个可行的换楼请求列表。如果是,那么我们就用 $cnt$ 更新答案 $ans$。判断 $mask$ 是否是一个可行的换楼请求列表,只需要判断对于每个楼,它的净流入量是否为 $0$ 即可。
72+
我们在 $[1, 2^{m})$ 的范围内枚举所有的二进制数,对于每个二进制数 $mask$,我们先算出它的二进制表示中有多少个 $1$,记为 $cnt$,如果 $cnt$ 比当前答案 $ans$ 大,那么我们再判断 $mask$ 是否是一个可行的换楼请求列表。如果是,那么我们就用 $cnt$ 更新答案 $ans$。判断 $mask$ 是否是一个可行的换楼请求列表,只需要判断对于每个楼,它的净流入量是否为 $0$ 即可。
7373

74-
时间复杂度 $O(2^m \times m)$,空间复杂度 $O(n)$。其中 $m$ 和 $n$ 分别是换楼请求列表的长度和楼的数量。
74+
时间复杂度 $O(2^m \times (m + n))$,空间复杂度 $O(n)$。其中 $m$ 和 $n$ 分别是换楼请求列表的长度和楼的数量。
7575

7676
<!-- tabs:start -->
7777

solution/1600-1699/1626.Best Team With No Conflicts/README.md

+21-3
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,26 @@ func max(a, b int) int {
357357
}
358358
```
359359

360+
### **TypeScript**
361+
362+
```ts
363+
function bestTeamScore(scores: number[], ages: number[]): number {
364+
const arr = ages.map((age, i) => [age, scores[i]]);
365+
arr.sort((a, b) => (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));
366+
const n = arr.length;
367+
const f = new Array(n).fill(0);
368+
for (let i = 0; i < n; ++i) {
369+
for (let j = 0; j < i; ++j) {
370+
if (arr[i][1] >= arr[j][1]) {
371+
f[i] = Math.max(f[i], f[j]);
372+
}
373+
}
374+
f[i] += arr[i][1];
375+
}
376+
return Math.max(...f);
377+
}
378+
```
379+
360380
### **JavaScript**
361381

362382
```js
@@ -370,17 +390,15 @@ var bestTeamScore = function (scores, ages) {
370390
arr.sort((a, b) => (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));
371391
const n = arr.length;
372392
const f = new Array(n).fill(0);
373-
let ans = 0;
374393
for (let i = 0; i < n; ++i) {
375394
for (let j = 0; j < i; ++j) {
376395
if (arr[i][1] >= arr[j][1]) {
377396
f[i] = Math.max(f[i], f[j]);
378397
}
379398
}
380399
f[i] += arr[i][1];
381-
ans = Math.max(ans, f[i]);
382400
}
383-
return ans;
401+
return Math.max(...f);
384402
};
385403
```
386404

solution/1600-1699/1626.Best Team With No Conflicts/README_EN.md

+21-3
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,26 @@ func max(a, b int) int {
329329
}
330330
```
331331

332+
### **TypeScript**
333+
334+
```ts
335+
function bestTeamScore(scores: number[], ages: number[]): number {
336+
const arr = ages.map((age, i) => [age, scores[i]]);
337+
arr.sort((a, b) => (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));
338+
const n = arr.length;
339+
const f = new Array(n).fill(0);
340+
for (let i = 0; i < n; ++i) {
341+
for (let j = 0; j < i; ++j) {
342+
if (arr[i][1] >= arr[j][1]) {
343+
f[i] = Math.max(f[i], f[j]);
344+
}
345+
}
346+
f[i] += arr[i][1];
347+
}
348+
return Math.max(...f);
349+
}
350+
```
351+
332352
### **JavaScript**
333353

334354
```js
@@ -342,17 +362,15 @@ var bestTeamScore = function (scores, ages) {
342362
arr.sort((a, b) => (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));
343363
const n = arr.length;
344364
const f = new Array(n).fill(0);
345-
let ans = 0;
346365
for (let i = 0; i < n; ++i) {
347366
for (let j = 0; j < i; ++j) {
348367
if (arr[i][1] >= arr[j][1]) {
349368
f[i] = Math.max(f[i], f[j]);
350369
}
351370
}
352371
f[i] += arr[i][1];
353-
ans = Math.max(ans, f[i]);
354372
}
355-
return ans;
373+
return Math.max(...f);
356374
};
357375
```
358376

solution/1600-1699/1626.Best Team With No Conflicts/Solution.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@ var bestTeamScore = function (scores, ages) {
88
arr.sort((a, b) => (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));
99
const n = arr.length;
1010
const f = new Array(n).fill(0);
11-
let ans = 0;
1211
for (let i = 0; i < n; ++i) {
1312
for (let j = 0; j < i; ++j) {
1413
if (arr[i][1] >= arr[j][1]) {
1514
f[i] = Math.max(f[i], f[j]);
1615
}
1716
}
1817
f[i] += arr[i][1];
19-
ans = Math.max(ans, f[i]);
2018
}
21-
return ans;
19+
return Math.max(...f);
2220
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function bestTeamScore(scores: number[], ages: number[]): number {
2+
const arr = ages.map((age, i) => [age, scores[i]]);
3+
arr.sort((a, b) => (a[0] == b[0] ? a[1] - b[1] : a[0] - b[0]));
4+
const n = arr.length;
5+
const f = new Array(n).fill(0);
6+
for (let i = 0; i < n; ++i) {
7+
for (let j = 0; j < i; ++j) {
8+
if (arr[i][1] >= arr[j][1]) {
9+
f[i] = Math.max(f[i], f[j]);
10+
}
11+
}
12+
f[i] += arr[i][1];
13+
}
14+
return Math.max(...f);
15+
}

0 commit comments

Comments
 (0)