In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned condition. Now, given the Teemo's attacking ascending time series towards Ashe and the poisoning time duration per Teemo's attacking, you need to output the total time that Ashe is in poisoned condition.

You may assume that Teemo attacks at the very beginning of a specific time point, and makes Ashe be in poisoned condition immediately.

Example 1:

Input: [1,4], 2
Output: 4
Explanation: At time point 1, Teemo starts attacking Ashe and makes Ashe be poisoned immediately.
This poisoned status will last 2 seconds until the end of time point 2.
And at time point 4, Teemo attacks Ashe again, and causes Ashe to be in poisoned status for another 2 seconds.
So you finally need to output 4.

Example 2:

Input: [1,2], 2
Output: 3
Explanation: At time point 1, Teemo starts attacking Ashe and makes Ashe be poisoned.
This poisoned status will last 2 seconds until the end of time point 2.
However, at the beginning of time point 2, Teemo attacks Ashe again who is already in poisoned status.
Since the poisoned status won't add up together, though the second poisoning attack will still work at time point 2, it will stop at the end of time point 3.
So you finally need to output 3.

Note:

  1. You may assume the length of given time series array won't exceed 10000.
  2. You may assume the numbers in the Teemo's attacking time series and his poisoning time duration per attacking are non-negative integers, which won't exceed 10,000,000.

在LOL世界中,有一个名为Teemo的英雄,他的攻击可以使他的敌人Ashe处于中毒状态。 给定Teemo攻击Ashe的上升时间序列以及每个Teemo攻击的中毒持续时间,求出Ashe处于中毒状态的总时间。可以假设Teemo在特定时间点的最开始时进行攻击,并使Ashe立即处于中毒状态。

解法:题目不难,直接计算每个时间区间是否大于中毒持续时间duration,大于就累加duration。如果小于,就累加时间区间。对于最后一个攻击时间,累加duration。

Java:

public int findPoisonedDuration(int[] timeSeries, int duration) {
if (timeSeries.length == 0) return 0;
int begin = timeSeries[0], total = 0;
for (int t : timeSeries) {
total = total + (t < begin + duration ? t - begin : duration);
begin = t;
}
return total + duration;
}   

Java:

public class Solution {
public int findPosisonedDuration(int[] timeSeries, int duration) { if(timeSeries.length == 0)return 0;
if(timeSeries.length == 1)return duration; int total = 0;
for(int i=1; i<timeSeries.length;i++)
{
total += Math.min(duration,timeSeries[i]-timeSeries[i-1]);
} total += duration; return total;
}
}  

Java:

public class Solution {
public int findPosisonedDuration(int[] timeSeries, int duration) {
if (timeSeries == null || timeSeries.length == 0 || duration == 0) return 0; int result = 0, start = timeSeries[0], end = timeSeries[0] + duration;
for (int i = 1; i < timeSeries.length; i++) {
if (timeSeries[i] > end) {
result += end - start;
start = timeSeries[i];
}
end = timeSeries[i] + duration;
}
result += end - start; return result;
}
}  

Python: wo

class Solution(object):
def findPoisonedDuration(self, timeSeries, duration):
"""
:type timeSeries: List[int]
:type duration: int
:rtype: int
"""
if not timeSeries:
return 0 res = 0
for i in xrange(1, len(timeSeries)):
interval = timeSeries[i] - timeSeries[i-1]
if interval >= duration:
res += duration
else:
res += interval res += duration return res   

Python:

class Solution(object):
def findPoisonedDuration(self, timeSeries, duration):
ans = duration * len(timeSeries)
for i in range(1,len(timeSeries)):
ans -= max(0, duration - (timeSeries[i] - timeSeries[i-1]))
return ans  

C++:

class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
if (timeSeries.empty()) return 0;
int res = 0, n = timeSeries.size();
for (int i = 1; i < n; ++i) {
int diff = timeSeries[i] - timeSeries[i - 1];
res += (diff < duration) ? diff : duration;
}
return res + duration;
}
};

  

All LeetCode Questions List 题目汇总

[LeetCode] 495. Teemo Attacking 提莫攻击的更多相关文章

  1. 495 Teemo Attacking 提莫攻击

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

  2. LeetCode 495. Teemo Attacking (提莫攻击)

    In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ...

  3. [LeetCode] Teemo Attacking 提莫攻击

    In LLP world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ...

  4. 【LeetCode】495. Teemo Attacking 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  5. 495. Teemo Attacking

    In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ...

  6. [Swift]LeetCode495. 提莫攻击 | Teemo Attacking

    In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ...

  7. Java实现 LeetCode 495 提莫攻击

    495. 提莫攻击 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态.现在,给出提莫对艾希的攻击时间序列和 ...

  8. [Leetcode]495.提莫攻击

    题目: 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态.现在,给出提莫对艾希的攻击时间序列和提莫攻击的中 ...

  9. leetcode解题报告(32):Teemo Attacking

    描述 In LLP world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poison ...

随机推荐

  1. Selenium+TestNG+CSV数据驱动

    1.工程的目录结构: # saas SAAS_UI自动化测试工程 # 一.工程的目录结构 1.saas/src是工程的入口 a.saas/src/main/java/com/saas/encapsul ...

  2. moviepy改进的想码

    这个要比前一个厚实点. 更改视频亮度,增加字幕,去除音轨,淡入特效,转换,截取时间,控制位置,组合图框,合成多段, 嗯,很多都有了. from django.test import TestCase ...

  3. 微信小程序~下拉刷新真机测试不弹回的处理办法

    问题描述: 下拉刷新在手机上不会自动回弹,开发工具可以 解决办法: 主动调用wx.stopPullDownRefresh /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDow ...

  4. netstat -an unix socket 会阻塞吗

    [lyd@localhost ~]$ netstat -an | grep "SOFO"unix 2 [ ACC ] SEQPACKET LISTENING 86308 @*MY- ...

  5. 在windows下安装cx_Oracle问题

    将 instantclient_11_2 所在的目录添加到环境变量,但是环境变量有时没有立即生效,可以复制 oci.dll(版本也要正确)到 \Python36\Lib\site-packages 目 ...

  6. Laravel —— 特殊分页

    项目中,分页经常会用到. Laravel 中也自带了分页功能. 但有些时候需要稍作修改,来满足自己的需求. 一.普通分页 1.控制器中,用 paginate() 方法. $users = DB::ta ...

  7. oracle数据库登录和

    首先引用百度云两个DLL文件 dbhelpher.DLL 和  Oracle.ManagedDataAccess.dll,加入配置文件sysdb文件 配置文件内容 < [DBMODE]MODE= ...

  8. Windows 2008R2 安装PostgreSQL 11.6

    前些天在CentOS 7.5 下安装了PostgreSQL 11.6.除了在无外网环境下需要另外配置之外,其他没有什么差别.今天主要写一下在Windows下面安装PostgreSQL的问题. 在官网看 ...

  9. idea中properties配置文件 注释显示中文乱码问题

  10. 文字环绕和两栏自适应以及区域滚动插件iscroll.js

    一.文字环绕效果:使用浮动 <div class="boxleft"></div> 我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字我是一段文字 ...