题目描述

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。

如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。

说明:

  • 如果题目有解,该答案即为唯一答案。
  • 输入数组均为非空数组,且长度相同。
  • 输入数组中的元素均为非负数。

示例 1:

输入:
gas = [1,2,3,4,5]
cost = [3,4,5,1,2] 输出: 3 解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。

示例 2:

输入:
gas = [2,3,4]
cost = [3,4,3] 输出: -1 解释:
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。
我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油
开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油
开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。

解题思路

从左往右找到第一个加油站汽油量不小于到下一站油耗的站点,从当前站点开始遍历,维护当前剩余的油量,每到一个站点计算剩余油量加加油量是否足以支撑油耗,若不足以支撑到下一站就停止遍历,若最后遍历到原来的站点,说明可以绕环路行驶一周。注意在遍历加油站时,要判断是否走到了末尾站。

代码

 class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
for(int i = ; i < gas.size(); i++){
if(gas[i] < cost[i]) continue;
int rem = gas[i] - cost[i], j = i == gas.size() - ? : i + ;
while(i != j){
rem += gas[j] - cost[j];
if(rem < ) break;
j = j == gas.size() - ? : j + ;
}
if(i == j) return i;
}
return -;
}
};

最新文章

  1. Beginners Guide To Web Development
  2. spring里的controller之间的跳转
  3. SQL查询所有表,所有列
  4. php如何发起POST DELETE GET POST 请求
  5. Xamarin 编程之打电话
  6. CentOS6.5 安装 tomcat
  7. CRT注册工具使用说明
  8. Linux core 文件介绍
  9. code md5
  10. SortedList的用法
  11. 一个session已经ACTIVE20多小时,等待事件SQL*Net more data from client
  12. POJ--1300--Door Man【推断无向图欧拉通路】
  13. POPTEST老李推荐:互联网时代100本必读书,来自100位业界大咖推荐 2
  14. xmanager 打开centos7图形化窗口
  15. iptables(3)
  16. letcode code]Maximum Subarray
  17. Atitit vue.js 把ajax数据 绑定到form表单
  18. eclipse 安装图形插件(图形化编程)
  19. PL/SQL 的一些用法
  20. Sharepoint 2013 多服务器域的目录服务器和搜索服务的配置

热门文章

  1. vue实现吸顶
  2. python 小记
  3. 第十章、typing模块
  4. 逆向破解H.Koenig 遥控器 Part 2
  5. 微信小程序音乐播放器
  6. three.js之让物体动起来方式(二)移动物体
  7. Hive动态分区和分桶(八)
  8. MyBatis---join 查询
  9. PHP类知识----值传递和引用传递
  10. Luogu P3804 【模板】后缀自动机