Skip to content

Commit c238c6b

Browse files
authored
feat: add solutions to lc problem: No.2383 (#3538)
No.2383.Minimum Hours of Training to Win a Competition
1 parent ff04023 commit c238c6b

15 files changed

+267
-711
lines changed

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/README.md

+89-259
Large diffs are not rendered by default.

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/README_EN.md

+93-249
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
int minNumberOfHours(int initialEnergy, int initialExperience, int* energy, int energySize, int* experience, int experienceSize) {
2-
int res = 0;
3-
for (int i = 0; i < energySize; i++) {
4-
if (initialEnergy <= energy[i]) {
5-
res += energy[i] - initialEnergy + 1;
6-
initialEnergy = energy[i] + 1;
1+
int minNumberOfHours(int x, int y, int* energy, int energySize, int* experience, int experienceSize) {
2+
int ans = 0;
3+
for (int i = 0; i < energySize; ++i) {
4+
int dx = energy[i], dy = experience[i];
5+
if (x <= dx) {
6+
ans += dx + 1 - x;
7+
x = dx + 1;
78
}
8-
if (initialExperience <= experience[i]) {
9-
res += experience[i] - initialExperience + 1;
10-
initialExperience = experience[i] + 1;
9+
if (y <= dy) {
10+
ans += dy + 1 - y;
11+
y = dy + 1;
1112
}
12-
initialEnergy -= energy[i];
13-
initialExperience += experience[i];
13+
x -= dx;
14+
y += dy;
1415
}
15-
return res;
16-
}
16+
return ans;
17+
}
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
class Solution {
22
public:
3-
int minNumberOfHours(int initialEnergy, int initialExperience, vector<int>& energy, vector<int>& experience) {
3+
int minNumberOfHours(int x, int y, vector<int>& energy, vector<int>& experience) {
44
int ans = 0;
55
for (int i = 0; i < energy.size(); ++i) {
6-
int a = energy[i], b = experience[i];
7-
if (initialEnergy <= a) {
8-
ans += a - initialEnergy + 1;
9-
initialEnergy = a + 1;
6+
int dx = energy[i], dy = experience[i];
7+
if (x <= dx) {
8+
ans += dx + 1 - x;
9+
x = dx + 1;
1010
}
11-
if (initialExperience <= b) {
12-
ans += b - initialExperience + 1;
13-
initialExperience = b + 1;
11+
if (y <= dy) {
12+
ans += dy + 1 - y;
13+
y = dy + 1;
1414
}
15-
initialEnergy -= a;
16-
initialExperience += b;
15+
x -= dx;
16+
y += dy;
1717
}
1818
return ans;
1919
}
20-
};
20+
};
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
func minNumberOfHours(initialEnergy int, initialExperience int, energy []int, experience []int) int {
2-
ans := 0
3-
for i, a := range energy {
4-
b := experience[i]
5-
if initialEnergy <= a {
6-
ans += a - initialEnergy + 1
7-
initialEnergy = a + 1
1+
func minNumberOfHours(x int, y int, energy []int, experience []int) (ans int) {
2+
for i, dx := range energy {
3+
dy := experience[i]
4+
if x <= dx {
5+
ans += dx + 1 - x
6+
x = dx + 1
87
}
9-
if initialExperience <= b {
10-
ans += b - initialExperience + 1
11-
initialExperience = b + 1
8+
if y <= dy {
9+
ans += dy + 1 - y
10+
y = dy + 1
1211
}
13-
initialEnergy -= a
14-
initialExperience += b
12+
x -= dx
13+
y += dy
1514
}
16-
return ans
17-
}
15+
return
16+
}
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
class Solution {
2-
public int minNumberOfHours(
3-
int initialEnergy, int initialExperience, int[] energy, int[] experience) {
2+
public int minNumberOfHours(int x, int y, int[] energy, int[] experience) {
43
int ans = 0;
54
for (int i = 0; i < energy.length; ++i) {
6-
int a = energy[i], b = experience[i];
7-
if (initialEnergy <= a) {
8-
ans += a - initialEnergy + 1;
9-
initialEnergy = a + 1;
5+
int dx = energy[i], dy = experience[i];
6+
if (x <= dx) {
7+
ans += dx + 1 - x;
8+
x = dx + 1;
109
}
11-
if (initialExperience <= b) {
12-
ans += b - initialExperience + 1;
13-
initialExperience = b + 1;
10+
if (y <= dy) {
11+
ans += dy + 1 - y;
12+
y = dy + 1;
1413
}
15-
initialEnergy -= a;
16-
initialExperience += b;
14+
x -= dx;
15+
y += dy;
1716
}
1817
return ans;
1918
}
20-
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
class Solution:
22
def minNumberOfHours(
3-
self,
4-
initialEnergy: int,
5-
initialExperience: int,
6-
energy: List[int],
7-
experience: List[int],
3+
self, x: int, y: int, energy: List[int], experience: List[int]
84
) -> int:
95
ans = 0
10-
for a, b in zip(energy, experience):
11-
if initialEnergy <= a:
12-
ans += a - initialEnergy + 1
13-
initialEnergy = a + 1
14-
if initialExperience <= b:
15-
ans += b - initialExperience + 1
16-
initialExperience = b + 1
17-
initialEnergy -= a
18-
initialExperience += b
6+
for dx, dy in zip(energy, experience):
7+
if x <= dx:
8+
ans += dx + 1 - x
9+
x = dx + 1
10+
if y <= dy:
11+
ans += dy + 1 - y
12+
y = dy + 1
13+
x -= dx
14+
y += dy
1915
return ans
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
impl Solution {
22
pub fn min_number_of_hours(
3-
mut initial_energy: i32,
4-
mut initial_experience: i32,
3+
mut x: i32,
4+
mut y: i32,
55
energy: Vec<i32>,
66
experience: Vec<i32>,
77
) -> i32 {
8-
let n = energy.len();
9-
let mut res = 0;
10-
for i in 0..n {
11-
if initial_energy <= energy[i] {
12-
res += energy[i] - initial_energy + 1;
13-
initial_energy = energy[i] + 1;
8+
let mut ans = 0;
9+
10+
for (&dx, &dy) in energy.iter().zip(experience.iter()) {
11+
if x <= dx {
12+
ans += dx + 1 - x;
13+
x = dx + 1;
1414
}
15-
if initial_experience <= experience[i] {
16-
res += experience[i] - initial_experience + 1;
17-
initial_experience = experience[i] + 1;
15+
if y <= dy {
16+
ans += dy + 1 - y;
17+
y = dy + 1;
1818
}
19-
initial_energy -= energy[i];
20-
initial_experience += experience[i];
19+
x -= dx;
20+
y += dy;
2121
}
22-
res
22+
23+
ans
2324
}
2425
}
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,17 @@
1-
function minNumberOfHours(
2-
initialEnergy: number,
3-
initialExperience: number,
4-
energy: number[],
5-
experience: number[],
6-
): number {
7-
const n = energy.length;
1+
function minNumberOfHours(x: number, y: number, energy: number[], experience: number[]): number {
82
let ans = 0;
9-
for (let i = 0; i < n; i++) {
10-
const minEnergy = energy[i];
11-
const minExperience = experience[i];
12-
if (initialEnergy <= minEnergy) {
13-
const need = minEnergy - initialEnergy + 1;
14-
ans += need;
15-
initialEnergy += need;
3+
for (let i = 0; i < energy.length; ++i) {
4+
const [dx, dy] = [energy[i], experience[i]];
5+
if (x <= dx) {
6+
ans += dx + 1 - x;
7+
x = dx + 1;
168
}
17-
if (initialExperience <= minExperience) {
18-
const need = minExperience - initialExperience + 1;
19-
ans += need;
20-
initialExperience += need;
9+
if (y <= dy) {
10+
ans += dy + 1 - y;
11+
y = dy + 1;
2112
}
22-
initialEnergy -= minEnergy;
23-
initialExperience += minExperience;
13+
x -= dx;
14+
y += dy;
2415
}
2516
return ans;
2617
}

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/Solution2.cpp

-15
This file was deleted.

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/Solution2.go

-17
This file was deleted.

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/Solution2.java

-18
This file was deleted.

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/Solution2.py

-15
This file was deleted.

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/Solution2.ts

-23
This file was deleted.

solution/2300-2399/2383.Minimum Hours of Training to Win a Competition/Solution3.ts

-17
This file was deleted.

0 commit comments

Comments
 (0)