今天继续给大家分享一道力扣的做题心得今天这道题目是 495.提莫攻击
题目如下,题目链接:https://leetcode.cn/problems/teemo-attacking
1,题目分析
直接对数组进行遍历分情况来累积时间然后计算出总时间
玩过游戏的同志们应该很感兴趣这个题,对于这个中毒时间的的计算,只要理解了下面的几个难点这道题就非常简单了,
难点一:提莫的攻击时间不是一个规律的时间,所以每次攻击都需要计算一下总中毒时间,即数组每遍历递增一次就需要判断一下总中毒需要增加多少时间 难点二:中毒总时间的计算不是每次都需要加一个这个固定的中毒时间值,我们需要判断遍历的这个数和下一个数的时间间隔
2,解题思路
下面是我的代码
class Solution {public int findPoisonedDuration(int[] timeSeries, int duration) {int time = 0;int n = timeSeries.length;for(int i = 0; i <= timeSeries.length;i++){if(i == (n-1)){time = time + duration;return time;}if( (timeSeries[i+1] - timeSeries[i]) <= duration){time = time + (timeSeries[i+1] - timeSeries[i]);}else{time = time + duration;}}return -1;}
}
因为计算(timeSeries[i+1] - timeSeries[i])时会有数组索引溢出的错误,但是我们刚好在数组的最后一个值就是需要特殊处理一下,因为数组的最后一个数是最后一次攻击的时间,所以在此次攻击之后肯定是持续duration秒就结束了,所以只需要加一个判断当遍历到 i = timeSeries.length- 1 时 直接返回 总时间加上一个deration即可
4,总结
感谢大家的阅读,希望这篇解题心得能为大家带来一些收获,我们共同进步!大家的点赞就是我的动力谢谢大家,还有什么更优解或者问题欢迎大家在评论区讨论分享!