在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。
你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/teemo-attacking
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
输入: [1,4], 2
输出: 4
原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。
第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。
所以最终输出 4 秒。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/teemo-attacking
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1、将数组中相邻的差值和持续时间duration做比较。如果差值小于duration则总时间sum+=差值;如果差值大于duration则总时间sum+=duration
2、考虑持续时间duration为0 和 数组长度为0 的情况
if duration == 0 or len(timeSeries) == 0:
return 0
3、python中的没有 && 和 || 形式
python中是没有&&及||这两个运算符的,取而代之的是英文 and 和 or 。
4、python中没有 a++ 形式
class Solution:
def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
sum = 0
var = timeSeries[0]
for i in timeSeries:
pre = i - var
var = i
if pre < duration:
sum += pre
else:
sum += duration
sum += duration
if duration == 0 or len(timeSeries) == 0:
return 0
else:
return sum
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int time = 0;
for (int i = 0; i < timeSeries.length - 1; i++) {
if ((timeSeries[i + 1] - timeSeries[i]) >= duration) {
time = time + duration;
} else {
time = time + (timeSeries[i + 1] - timeSeries[i]);
}
}
time = time + duration;
return time;
}
}
2021/11/10
又做了一遍,和之前的比较,看到了自己的进步,哭哭了。
我要继续加油继续加油!!!
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int n = timeSeries.length;
int sum = 0;
for (int i = 0; i < n - 1; i++){
sum += Math.min(timeSeries[i + 1] - timeSeries[i], duration);
}
sum += duration;
return sum;
}
}
2022/4/12
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int n = timeSeries.length;
int res = 0;
for (int i = 0; i < n - 1; i++) {
res += timeSeries[i] + duration > timeSeries[i + 1] ? timeSeries[i + 1] - timeSeries[i] : duration;
}
return res + duration;
}
}