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