Leetcode 2383. Minimum Hours of Training to Win a Competition
You are participating in a competition in which you need to complete multiple rounds. You have an initial amount of experience and energy. To successfully complete each round, you need a certain amount of experience and energy.
Given the following:
experience
and energy
where experience[i]
and energy[i]
are the experience and energy required to complete the ith round of the competition.Your goal is to determine the minimum number of additional experience and energy hours you need to accumulate to win all rounds of the competition. Return the sum of the additional experience and energy hours required.
initialExperience
and initialEnergy
.public class Solution {
public int minNumberOfHours(int initialExperience, int initialEnergy, int[] experience, int[] energy) {
int totalAddedExperience = 0;
int totalAddedEnergy = 0;
// Calculate the total energy required
int totalEnergyRequired = 0;
for (int e : energy) {
totalEnergyRequired += e;
}
// Calculate the extra energy needed if any
if (initialEnergy < totalEnergyRequired) {
totalAddedEnergy = totalEnergyRequired - initialEnergy;
}
// Iterate through each round to calculate the extra experience needed
int currentExperience = initialExperience;
for (int i = 0; i < experience.length; i++) {
if (currentExperience <= experience[i]) {
totalAddedExperience += experience[i] - currentExperience + 1;
currentExperience = experience[i] + 1;
}
currentExperience += experience[i];
}
return totalAddedEnergy + totalAddedExperience;
}
}
experience
and energy
arrays once. Therefore, the time complexity of this approach is (O(n)), where n
is the length of the experience
and energy
arrays.This solution efficiently calculates the required additional experience and energy in linear time, providing an optimal method for determining the total training hours needed to win the competition.
Got blindsided by a question you didn’t expect?
Spend too much time studying?
Or simply don’t have the time to go over all 3000 questions?