leetCode-Teemo Attacking
来源:互联网 发布:slax linux初始密码 编辑:程序博客网 时间:2024/06/05 06:51
Description:
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], 2Output: 4Explanation: 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], 2Output: 3Explanation: 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:
You may assume the length of given time series array won't exceed 10000. 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.
My Solution:
class Solution { public int findPoisonedDuration(int[] timeSeries, int duration) { int len = timeSeries.length; if(len == 0){ return 0; } if(len == 1){ return duration; } int end = timeSeries[0] + duration; int sum = duration; for(int i = 1;i < len;i++){ if(end > timeSeries[i]){ sum += timeSeries[i] + duration - end; }else{ sum += duration; } end = timeSeries[i] + duration; } return sum; }}
Better Solution:
class Solution { public int findPoisonedDuration(int[] timeSeries, int duration) { int currBase=0,res=0; for(int i:timeSeries){ if(i<=currBase && i+duration>=currBase){ res+=(i+duration)-currBase; }else{res+=duration;} currBase=i+duration; } return res; }}
Best Solution:
class Solution { public int findPoisonedDuration(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; }}
阅读全文
0 0
- LeetCode题解:Teemo Attacking
- LeetCode 495. Teemo Attacking
- LeetCode: Teemo Attacking
- LeetCode 495. Teemo Attacking
- LeetCode 495 --- Teemo Attacking
- LeetCode:495. Teemo Attacking
- 【Leetcode】495. Teemo Attacking
- Leetcode 495 Teemo Attacking
- LeetCode 495 Teemo Attacking
- [leetcode] 495. Teemo Attacking
- LeetCode|Array|Teemo Attacking
- leetcode 495. Teemo Attacking
- 【LeetCode】495. Teemo Attacking
- LeetCode 495. Teemo Attacking
- LeetCode 495. Teemo Attacking
- leetcode 495. Teemo Attacking
- leetcode 495. Teemo Attacking
- [Leetcode 495] Teemo Attacking
- 说说Http与Socket的区别,分类详解
- Windows Socket 编程 服务器端 可多用户连接
- 基本数据类型、包装类、String之间的转换
- 输入字符串和子串,求出子串在字符串出现的次数
- laravel 课程学习系列三----------------第三章.Artisan控制台
- leetCode-Teemo Attacking
- 使用迭代器的错误之一:对迭代器越界值解引用,而且这种情况是发生在判断条件中,比较隐蔽
- mac shell
- c++中去掉vector或者数组中的重复元素
- myeclipse 生成jar包后,spring无法扫描到bean定义
- 浅谈javascript中的constructor属性。
- Java开发中的23种设计模式详解(转)
- C socket 发送HTTP简单介绍
- App发生崩溃保存崩溃日志在本地,并发送邮件给开发人员