impl: q134
This commit is contained in:
parent
411a71bd16
commit
20cc46bcd0
2 changed files with 57 additions and 0 deletions
23
solutions/q134/solution.go
Normal file
23
solutions/q134/solution.go
Normal 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
|
||||||
34
solutions/q134/solution_test.go
Normal file
34
solutions/q134/solution_test.go
Normal 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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue