#1537. 加油站问题

加油站问题

故事背景

在一个环形公路上,有多个加油站,每个加油站有一定量的汽油。一辆汽车需要从某个加油站出发,沿着环形公路行驶一周,回到出发的加油站。汽车的油箱容量无限大,每行驶1公里需要消耗1升汽油。作为司机,你需要选择一个合适的起始加油站,使得汽车能够成功环绕一周。

题目描述

在一条环形公路上有 n 个加油站,编号为 0 到 n-1 。每个加油站 i 有 gas[i] 升汽油。从加油站 i 到下一个加油站 i+1 需要消耗 cost[i] 升汽油。

你有一辆油箱容量无限大的汽车,从某个加油站出发,沿着环形公路行驶。请你找出一个起始加油站,使得从该加油站出发,汽车能够绕环形公路行驶一周回到该加油站。

如果存在这样的起始加油站,返回其编号;否则,返回 -1。

输入格式

第一行输入一个整数 n ( 1n10001 \leq n \leq 1000 ),表示加油站的数量。

第二行输入 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

提示

  • 这是一个经典的贪心算法问题
  • 考虑总汽油量是否大于等于总耗油量
  • 可以使用一次遍历的方法来找到起始加油站
  • 注意处理环形路线的特性