2283. Minimum Hours of Training to Win a Competition

2283. Minimum Hours of Training to Win a Competition #

题目 #

  • 你正在参加一场比赛,给你两个 整数 initialEnergyinitialExperience 分别表示你的初始精力和初始经验。
  • 另给你两个下标从 0 开始的整数数组 energyexperience,长度均为 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;
    }
}

致谢 #

力扣官方题解