Skip to content

Commit ea9d9b9

Browse files
authored
Merge pull request #476 from TTWShell/3147
3147. Taking Maximum Energy From the Mystic Dungeon
2 parents d229d73 + afe35fb commit ea9d9b9

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

leetcode/array/3147.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package larray
2+
3+
import (
4+
"slices"
5+
)
6+
7+
func maximumEnergy(energy []int, k int) int {
8+
length := len(energy)
9+
10+
dp := make([]int, length)
11+
for i := length - k; i < length; i++ {
12+
dp[i] = energy[i]
13+
}
14+
15+
for i := length - k - 1; i >= 0; i-- {
16+
dp[i] = dp[i+k] + energy[i]
17+
18+
}
19+
return slices.Max(dp)
20+
}

leetcode/array/3147_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package larray
2+
3+
import "testing"
4+
5+
func TestMaximumEnergy(t *testing.T) {
6+
tests := []struct {
7+
name string
8+
energy []int
9+
k int
10+
expected int
11+
}{
12+
{
13+
name: "Example 1",
14+
energy: []int{5, 2, -10, -5, 1},
15+
k: 3,
16+
expected: 3,
17+
},
18+
{
19+
name: "Example 2",
20+
energy: []int{-2, -3, -1},
21+
k: 2,
22+
expected: -1,
23+
},
24+
}
25+
26+
for _, tt := range tests {
27+
t.Run(tt.name, func(t *testing.T) {
28+
result := maximumEnergy(tt.energy, tt.k)
29+
if result != tt.expected {
30+
t.Errorf("maximumEnergy(%v, %d) = %d, expected %d",
31+
tt.energy, tt.k, result, tt.expected)
32+
}
33+
})
34+
}
35+
}

0 commit comments

Comments
 (0)