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++代码
|
|