2283. Minimum Hours of Training to Win a Competition #
题目 #
- 你正在参加一场比赛,给你两个 正 整数
initialEnergy
和initialExperience
分别表示你的初始精力和初始经验。 - 另给你两个下标从 0 开始的整数数组
energy
和experience
,长度均为n
。 - 你将会 依次 对上
n
个对手。第i
个对手的精力和经验分别用energy[i]
和experience[i]
表示。当你对上对手时,需要在经验和精力上都 严格 超过对手才能击败他们,然后在可能的情况下继续对上下一个对手。 - 击败第
i
个对手会使你的经验 增加experience[i]
,但会将你的精力 减少energy[i]
。 - 在开始比赛前,你可以训练几个小时。每训练一个小时,你可以选择将增加经验增加 1 或者 将精力增加 1 。
- 返回击败全部
n
个对手需要训练的 最少 小时数目。
思路 #
模拟 #
代码 #
模拟 #
class Solution {
public int minNumberOfHours(int initialEnergy, int initialExperience, int[] energy, int[] experience) {
int myEnergy = initialEnergy, myExperience = initialExperience;
int ans = 0;
for (int i = 0; i < energy.length; i++) {
if (myEnergy <= energy[i]) {
ans += energy[i] + 1 - myEnergy;
myEnergy = energy[i] + 1;
}
if (myExperience <= experience[i]) {
ans += experience[i] + 1 - myExperience;
myExperience = experience[i] + 1;
}
myEnergy -= energy[i];
myExperience += experience[i];
}
return ans;
}
}