力扣 495. 提莫攻击

题目

在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。

你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/teemo-attacking
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例1:

输入: [1,4], 2
输出: 4
原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。
第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。
所以最终输出 4 秒。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/teemo-attacking
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法1

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++ 形式

Python实现
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

力扣 495. 提莫攻击_第1张图片

Java实现1
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;
    }
}

力扣 495. 提莫攻击_第2张图片

Java实现2

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;
    }
}

力扣 495. 提莫攻击_第3张图片

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;
    }
}

力扣 495. 提莫攻击_第4张图片

你可能感兴趣的:(力扣,leetcode,算法,职场和发展)