2 minutes
Leetcode 495
The idea of these two solutions is pretty simple, but in the second solution, I didn’t want to use a variable to store the result, so I manipulated timeSeries
into storing the resulting values (Basically used DP).
The First Solution
I first did this solution like this:
func findPoisonedDuration(timeSeries []int, duration int) int {
res := 0
for i := 1; i < len(timeSeries); i++ {
if timeSeries[i - 1] + duration - 1 < timeSeries[i] {
res += duration
} else {
res += timeSeries[i] - timeSeries[i - 1]
}
}
if len(timeSeries) != 0 {
res += duration
}
return res
}
But then relised that I could make a nicer code by doing:
func findPoisonedDuration(timeSeries []int, duration int) int {
res := 0
for i := 1; i < len(timeSeries); i++ {
res += int(math.Min(float64(duration), float64(timeSeries[i] - timeSeries[i - 1])))
}
if len(timeSeries) != 0 {
res += duration
}
return res
}
The Second Solution
And for the second solution I first did this:
func findPoisonedDuration(timeSeries []int, duration int) int {
if len(timeSeries) == 1 {
return duration
}
timeSeries = helper(timeSeries, 0, duration, timeSeries[1] - timeSeries[0], 0)
for i := 1; i < len(timeSeries) - 1; i++ {
timeSeries = helper(timeSeries, i, duration, timeSeries[i + 1] - timeSeries[i], timeSeries[i - 1])
}
return timeSeries[len(timeSeries) - 2] + duration
}
func helper(timeSeries []int, i, duration, elseAdd, previous int) []int {
if timeSeries[i + 1] > timeSeries[i] + duration - 1 {
timeSeries[i] = previous + duration
} else {
timeSeries[i] = previous + elseAdd
}
return timeSeries
}
But relized that I could make it nicer by doing:
func findPoisonedDuration(timeSeries []int, duration int) int {
if len(timeSeries) == 1 {
return duration
}
timeSeries[0] = int(math.Min(float64(duration), float64(timeSeries[1] - timeSeries[0])))
for i := 1; i < len(timeSeries) - 1; i++ {
timeSeries[i] = int(math.Min(float64(timeSeries[i - 1] + duration), float64(timeSeries[i - 1] + timeSeries[i + 1] - timeSeries[i])))
}
return timeSeries[len(timeSeries) - 2] + duration
}
Read other posts