> Problem: [495. 提莫攻击]
最近会更新关于数组类型的题,此题为数组中的遍历
[TOC]
# 思路
> 看题就明白题要求的是什么,要去做什么,就明白了
# 解题方法
> 遍历数组去求中毒时间,设置一个int型变量 a 储存中毒时间,假如有数组【1,3,4】,中毒时间为 2,进行遍历数组
第一次遍历 取出数组中第一个数 1 1+2 则是中毒到此时间结束, 则为1,2当前中毒两秒,第3秒结束, 进行判断,看是否是最后一个数,如果是最后一个数则不需要进行下面判断,如果上面此判定为否,看中毒结束的时间与第二个数的是否相等,如果相等或者大于,则用该时间减去前一个数,则为在下一个攻击前中毒的秒数,如果上面的判定为否,则用中毒的结束秒数减去中毒刚开始的时间,则为中毒的时间,则与a相加,前两个判定为是,则也进行相加。
接下来的循环理应也如此!
# 复杂度
- 时间复杂度:
> 添加时间复杂度, 示例: $O(n)$
- 空间复杂度:
> 添加空间复杂度, 示例: $O(n)$
# Code
```Java []
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int sum = 0;
for (int i = 0; i < timeSeries.length; i++) {
int a = timeSeries[i];
int b = timeSeries[i] + duration;
if (i == timeSeries.length -1){
sum = sum + b - timeSeries[i];
} else if (b >= timeSeries[i+1]) {
sum = sum + timeSeries[i+1] - a;
}else
sum = sum + b - timeSeries[i];
}
return sum;
}
}
```