impl: q134

This commit is contained in:
kanna5 2025-12-09 11:24:48 +09:00
parent 411a71bd16
commit 20cc46bcd0
2 changed files with 57 additions and 0 deletions

View file

@ -0,0 +1,23 @@
package q134
func canCompleteCircuit(gas []int, cost []int) int {
invalidated := 0
start, current, tank := 0, 0, 0
for {
tank = tank + gas[current] - cost[current]
current = (current + 1) % len(gas)
if tank < 0 {
invalidated += (current - start + len(gas)) % len(gas)
if invalidated >= len(gas) || current == start {
return -1
}
start = current
tank = 0
} else if current == start {
return start
}
}
}
var _ = canCompleteCircuit

View file

@ -0,0 +1,34 @@
package q134
import (
"testing"
)
func Test_canCompleteCircuit(t *testing.T) {
tests := []struct {
name string // description of this test case
// Named input parameters for target function.
gas []int
cost []int
want int
}{
{
gas: []int{1, 2, 3, 4, 5},
cost: []int{3, 4, 5, 1, 2},
want: 3,
},
{
gas: []int{2, 3, 4},
cost: []int{3, 4, 3},
want: -1,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := canCompleteCircuit(tt.gas, tt.cost)
if got != tt.want {
t.Errorf("canCompleteCircuit() = %v, want %v", got, tt.want)
}
})
}
}