134. 加油站
分析
- 模拟遍历:
- 从每个加油站
i
出发,模拟一圈是否能顺利到达终点
- 从每个加油站
- 剩余油量判断:
- 每经过一个加油站,更新剩余油量
oil = oil + gas[k] - cost[k]
- 如果油量不足
oil < 0
,说明从当前起点i
无法完成一圈
- 每经过一个加油站,更新剩余油量
- 跳过不可行区间:
- 如果从
i
出发失败,则从i + step + 1
开始继续尝试,因为i
到i + step
之间的起点也无法成功
- 如果从
- 终止条件:
- 如果某次尝试走满了
n
步(即step == n
),说明该起点i
能绕一圈,返回i
- 如果所有加油站都尝试失败,则返回
-1
- 如果某次尝试走满了
时间复杂度
时间复杂度 O(n)
空间复杂度
空间复杂度为 O(1)
C++代码
|
|