




Sponsored
Sponsored
This approach involves iteratively calculating the poison effect duration from the attack times given in timeSeries. The idea is to maintain a running total of poison duration impacts caused by each attack, making adjustments for overlaps where a new attack resets the poison timer.
Time Complexity: O(n), where n is the number of attack times in timeSeries.
Space Complexity: O(1), as we only use a limited amount of extra space.
1function findPoisonedDuration(timeSeries, duration) {
2    let totalDuration = 0;
3    for (let i = 0; i < timeSeries.length; i++) {
4        if (i === timeSeries.length - 1 || timeSeries[i + 1] >= timeSeries[i] + duration) {
5            totalDuration += duration;
6        } else {
7            totalDuration += timeSeries[i + 1] - timeSeries[i];
8        }
9    }
10    return totalDuration;
11}
12
13console.log(findPoisonedDuration([1, 4], 2));In JavaScript, the function implements a similar logic by iterating over the attack time points, evaluating whether the poison period should be added as a full duration or adjusted due to an overlap from subsequent attacks.
In this approach, we utilize a dynamic programming technique to handle overlapping intervals. The essence here is to consider the overlap between poison effects and adjust the ending intervals of these periods dynamically.
Time Complexity: O(n) since we iterate through timeSeries just once.
Space Complexity: O(1) due to using minimal additional memory.
1
This C solution manages the end of the current poison effect period, adjusting it dynamically with each attack. It checks for overlapped periods and updates the total duration based on effective poisoning time.