Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f3459fe

Browse files
feat: add solutions to lc problems: No.3332,3334 (doocs#3677)
* No.3332.Maximum Points Tourist Can Earn * No.3334.Find the Maximum Factor Score of Array
1 parent 3799d97 commit f3459fe

File tree

14 files changed

+649
-12
lines changed

14 files changed

+649
-12
lines changed

‎solution/3300-3399/3332.Maximum Points Tourist Can Earn/README.md‎

Lines changed: 94 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,25 +81,116 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3300-3399/3332.Ma
8181
#### Python3
8282

8383
```python
84-
84+
class Solution:
85+
def maxScore(
86+
self, n: int, k: int, stayScore: List[List[int]], travelScore: List[List[int]]
87+
) -> int:
88+
f = [[-inf] * n for _ in range(k + 1)]
89+
f[0] = [0] * n
90+
for i in range(1, k + 1):
91+
for j in range(n):
92+
for h in range(n):
93+
f[i][j] = max(
94+
f[i][j],
95+
f[i - 1][h]
96+
+ (stayScore[i - 1][j] if j == h else travelScore[h][j]),
97+
)
98+
return max(f[k])
8599
```
86100

87101
#### Java
88102

89103
```java
90-
104+
class Solution {
105+
public int maxScore(int n, int k, int[][] stayScore, int[][] travelScore) {
106+
int[][] f = new int[k + 1][n];
107+
for (var g : f) {
108+
Arrays.fill(g, Integer.MIN_VALUE);
109+
}
110+
Arrays.fill(f[0], 0);
111+
for (int i = 1; i <= k; ++i) {
112+
for (int j = 0; j < n; ++j) {
113+
for (int h = 0; h < n; ++h) {
114+
f[i][j] = Math.max(
115+
f[i][j], f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]));
116+
}
117+
}
118+
}
119+
return Arrays.stream(f[k]).max().getAsInt();
120+
}
121+
}
91122
```
92123

93124
#### C++
94125

95126
```cpp
96-
127+
class Solution {
128+
public:
129+
int maxScore(int n, int k, vector<vector<int>>& stayScore, vector<vector<int>>& travelScore) {
130+
int f[k + 1][n];
131+
memset(f, 0xc0, sizeof(f));
132+
memset(f[0], 0, sizeof(f[0]));
133+
for (int i = 1; i <= k; ++i) {
134+
for (int j = 0; j < n; ++j) {
135+
for (int h = 0; h < n; ++h) {
136+
f[i][j] = max(f[i][j], f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]));
137+
}
138+
}
139+
}
140+
return *max_element(f[k], f[k] + n);
141+
}
142+
};
97143
```
98144
99145
#### Go
100146
101147
```go
148+
func maxScore(n int, k int, stayScore [][]int, travelScore [][]int) (ans int) {
149+
f := make([][]int, k+1)
150+
for i := range f {
151+
f[i] = make([]int, n)
152+
for j := range f[i] {
153+
f[i][j] = math.MinInt32
154+
}
155+
}
156+
for j := 0; j < n; j++ {
157+
f[0][j] = 0
158+
}
159+
for i := 1; i <= k; i++ {
160+
for j := 0; j < n; j++ {
161+
f[i][j] = f[i-1][j] + stayScore[i-1][j]
162+
for h := 0; h < n; h++ {
163+
if h != j {
164+
f[i][j] = max(f[i][j], f[i-1][h]+travelScore[h][j])
165+
}
166+
}
167+
}
168+
}
169+
for j := 0; j < n; j++ {
170+
ans = max(ans, f[k][j])
171+
}
172+
return
173+
}
174+
```
102175

176+
#### TypeScript
177+
178+
```ts
179+
function maxScore(n: number, k: number, stayScore: number[][], travelScore: number[][]): number {
180+
const f: number[][] = Array.from({ length: k + 1 }, () => Array(n).fill(-Infinity));
181+
f[0].fill(0);
182+
for (let i = 1; i <= k; ++i) {
183+
for (let j = 0; j < n; ++j) {
184+
for (let h = 0; h < n; ++h) {
185+
f[i][j] = Math.max(
186+
f[i][j],
187+
f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]),
188+
);
189+
}
190+
}
191+
}
192+
return Math.max(...f[k]);
193+
}
103194
```
104195

105196
<!-- tabs:end -->

‎solution/3300-3399/3332.Maximum Points Tourist Can Earn/README_EN.md‎

Lines changed: 94 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,25 +78,116 @@ edit_url: https://github.com/doocs/leetcode/edit/main/solution/3300-3399/3332.Ma
7878
#### Python3
7979

8080
```python
81-
81+
class Solution:
82+
def maxScore(
83+
self, n: int, k: int, stayScore: List[List[int]], travelScore: List[List[int]]
84+
) -> int:
85+
f = [[-inf] * n for _ in range(k + 1)]
86+
f[0] = [0] * n
87+
for i in range(1, k + 1):
88+
for j in range(n):
89+
for h in range(n):
90+
f[i][j] = max(
91+
f[i][j],
92+
f[i - 1][h]
93+
+ (stayScore[i - 1][j] if j == h else travelScore[h][j]),
94+
)
95+
return max(f[k])
8296
```
8397

8498
#### Java
8599

86100
```java
87-
101+
class Solution {
102+
public int maxScore(int n, int k, int[][] stayScore, int[][] travelScore) {
103+
int[][] f = new int[k + 1][n];
104+
for (var g : f) {
105+
Arrays.fill(g, Integer.MIN_VALUE);
106+
}
107+
Arrays.fill(f[0], 0);
108+
for (int i = 1; i <= k; ++i) {
109+
for (int j = 0; j < n; ++j) {
110+
for (int h = 0; h < n; ++h) {
111+
f[i][j] = Math.max(
112+
f[i][j], f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]));
113+
}
114+
}
115+
}
116+
return Arrays.stream(f[k]).max().getAsInt();
117+
}
118+
}
88119
```
89120

90121
#### C++
91122

92123
```cpp
93-
124+
class Solution {
125+
public:
126+
int maxScore(int n, int k, vector<vector<int>>& stayScore, vector<vector<int>>& travelScore) {
127+
int f[k + 1][n];
128+
memset(f, 0xc0, sizeof(f));
129+
memset(f[0], 0, sizeof(f[0]));
130+
for (int i = 1; i <= k; ++i) {
131+
for (int j = 0; j < n; ++j) {
132+
for (int h = 0; h < n; ++h) {
133+
f[i][j] = max(f[i][j], f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]));
134+
}
135+
}
136+
}
137+
return *max_element(f[k], f[k] + n);
138+
}
139+
};
94140
```
95141
96142
#### Go
97143
98144
```go
145+
func maxScore(n int, k int, stayScore [][]int, travelScore [][]int) (ans int) {
146+
f := make([][]int, k+1)
147+
for i := range f {
148+
f[i] = make([]int, n)
149+
for j := range f[i] {
150+
f[i][j] = math.MinInt32
151+
}
152+
}
153+
for j := 0; j < n; j++ {
154+
f[0][j] = 0
155+
}
156+
for i := 1; i <= k; i++ {
157+
for j := 0; j < n; j++ {
158+
f[i][j] = f[i-1][j] + stayScore[i-1][j]
159+
for h := 0; h < n; h++ {
160+
if h != j {
161+
f[i][j] = max(f[i][j], f[i-1][h]+travelScore[h][j])
162+
}
163+
}
164+
}
165+
}
166+
for j := 0; j < n; j++ {
167+
ans = max(ans, f[k][j])
168+
}
169+
return
170+
}
171+
```
99172

173+
#### TypeScript
174+
175+
```ts
176+
function maxScore(n: number, k: number, stayScore: number[][], travelScore: number[][]): number {
177+
const f: number[][] = Array.from({ length: k + 1 }, () => Array(n).fill(-Infinity));
178+
f[0].fill(0);
179+
for (let i = 1; i <= k; ++i) {
180+
for (let j = 0; j < n; ++j) {
181+
for (let h = 0; h < n; ++h) {
182+
f[i][j] = Math.max(
183+
f[i][j],
184+
f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]),
185+
);
186+
}
187+
}
188+
}
189+
return Math.max(...f[k]);
190+
}
100191
```
101192

102193
<!-- tabs:end -->
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
int maxScore(int n, int k, vector<vector<int>>& stayScore, vector<vector<int>>& travelScore) {
4+
int f[k + 1][n];
5+
memset(f, 0xc0, sizeof(f));
6+
memset(f[0], 0, sizeof(f[0]));
7+
for (int i = 1; i <= k; ++i) {
8+
for (int j = 0; j < n; ++j) {
9+
for (int h = 0; h < n; ++h) {
10+
f[i][j] = max(f[i][j], f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]));
11+
}
12+
}
13+
}
14+
return *max_element(f[k], f[k] + n);
15+
}
16+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
func maxScore(n int, k int, stayScore [][]int, travelScore [][]int) (ans int) {
2+
f := make([][]int, k+1)
3+
for i := range f {
4+
f[i] = make([]int, n)
5+
for j := range f[i] {
6+
f[i][j] = math.MinInt32
7+
}
8+
}
9+
for j := 0; j < n; j++ {
10+
f[0][j] = 0
11+
}
12+
for i := 1; i <= k; i++ {
13+
for j := 0; j < n; j++ {
14+
f[i][j] = f[i-1][j] + stayScore[i-1][j]
15+
for h := 0; h < n; h++ {
16+
if h != j {
17+
f[i][j] = max(f[i][j], f[i-1][h]+travelScore[h][j])
18+
}
19+
}
20+
}
21+
}
22+
for j := 0; j < n; j++ {
23+
ans = max(ans, f[k][j])
24+
}
25+
return
26+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int maxScore(int n, int k, int[][] stayScore, int[][] travelScore) {
3+
int[][] f = new int[k + 1][n];
4+
for (var g : f) {
5+
Arrays.fill(g, Integer.MIN_VALUE);
6+
}
7+
Arrays.fill(f[0], 0);
8+
for (int i = 1; i <= k; ++i) {
9+
for (int j = 0; j < n; ++j) {
10+
for (int h = 0; h < n; ++h) {
11+
f[i][j] = Math.max(
12+
f[i][j], f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]));
13+
}
14+
}
15+
}
16+
return Arrays.stream(f[k]).max().getAsInt();
17+
}
18+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def maxScore(
3+
self, n: int, k: int, stayScore: List[List[int]], travelScore: List[List[int]]
4+
) -> int:
5+
f = [[-inf] * n for _ in range(k + 1)]
6+
f[0] = [0] * n
7+
for i in range(1, k + 1):
8+
for j in range(n):
9+
for h in range(n):
10+
f[i][j] = max(
11+
f[i][j],
12+
f[i - 1][h]
13+
+ (stayScore[i - 1][j] if j == h else travelScore[h][j]),
14+
)
15+
return max(f[k])
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function maxScore(n: number, k: number, stayScore: number[][], travelScore: number[][]): number {
2+
const f: number[][] = Array.from({ length: k + 1 }, () => Array(n).fill(-Infinity));
3+
f[0].fill(0);
4+
for (let i = 1; i <= k; ++i) {
5+
for (let j = 0; j < n; ++j) {
6+
for (let h = 0; h < n; ++h) {
7+
f[i][j] = Math.max(
8+
f[i][j],
9+
f[i - 1][h] + (j == h ? stayScore[i - 1][j] : travelScore[h][j]),
10+
);
11+
}
12+
}
13+
}
14+
return Math.max(...f[k]);
15+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /