本文主要是介绍力扣精选算法100道——提莫攻击(模拟专题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
🚩题目解析
🚩算法原理
🚩实现代码
🚩题目解析
输入:timeSeries = [1,4], duration = 2
输出:4
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。
艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4 。
输入:timeSeries = [1,2], duration = 2
输出:3
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。
艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒是 3 。
🚩算法原理
我们可以看到1 是如果俩次攻击的时间之差是1(前提是俩者相减小于duration)
我们看到俩次攻击时间之差是duration(前提是俩者相减大于等于duration)。3和7的差距是大于duration,所以可以中毒dauration秒。
结论:
中毒时间记为ret,相邻俩数之差为x
给定一个非递减的数组
数组相邻俩者之差x>=duration ret+=duration
数组相邻俩者之差x<duration ret+=x
🚩实现代码
class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int n=timeSeries.size();int ret=0;for(int i=1;i<n;i++){if(timeSeries[i]-timeSeries[i-1]>=duration){ret+=duration;}else{ret+=(timeSeries[i]-timeSeries[i-1]);}}ret+=duration;return ret;}
};
再学几天就得返校啦.....
这篇关于力扣精选算法100道——提莫攻击(模拟专题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!