#1537. 加油站问题
加油站问题
故事背景
在一个环形公路上,有多个加油站,每个加油站有一定量的汽油。一辆汽车需要从某个加油站出发,沿着环形公路行驶一周,回到出发的加油站。汽车的油箱容量无限大,每行驶1公里需要消耗1升汽油。作为司机,你需要选择一个合适的起始加油站,使得汽车能够成功环绕一周。
题目描述
在一条环形公路上有 n 个加油站,编号为 0 到 n-1 。每个加油站 i 有 gas[i] 升汽油。从加油站 i 到下一个加油站 i+1 需要消耗 cost[i] 升汽油。
你有一辆油箱容量无限大的汽车,从某个加油站出发,沿着环形公路行驶。请你找出一个起始加油站,使得从该加油站出发,汽车能够绕环形公路行驶一周回到该加油站。
如果存在这样的起始加油站,返回其编号;否则,返回 -1。
输入格式
第一行输入一个整数 n ( ),表示加油站的数量。
第二行输入 n 个整数,表示每个加油站的汽油量 gas[i] 。
第三行输入 n 个整数,表示从每个加油站到下一个加油站的耗油量 cost[i] 。
输出格式
输出一个整数,表示起始加油站的编号;如果不存在这样的起始加油站,输出 -1。
样例输入 1
3
1 2 3
3 1 2
样例输出 1
1
样例输入 2
4
1 3 2 4
2 4 3 1
样例输出 2
3
样例输入 3
2
2 3
3 4
样例输出 3
-1
提示
- 这是一个经典的贪心算法问题
- 考虑总汽油量是否大于等于总耗油量
- 可以使用一次遍历的方法来找到起始加油站
- 注意处理环形路线的特性