问题描述

在一条环路上有 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(int[] gas, int[] cost) {
if(gas.length==1) {if(gas[0]>=cost[0])return 0;elsereturn -1;}int n=gas.length;int[] temp=new int[n];for(int i=0;i<n;i++) {temp[i]=gas[i]-cost[i];}int nagetive=0;for(int i=0;i<gas.length;) {if(temp[i]>=0) {int num=temp[i];if(i==n-1) {if(num+nagetive>=0)return i;elsereturn -1;}for(int j=i+1;;j++) {num+=temp[j];if(num<0) {nagetive+=num;i=j+1;break;}if(j==n-1) {if(num+nagetive>=0)return i;elsereturn -1;}}}else {nagetive+=temp[i];i++;}}return -1;}
}

Leetcode134.加油站相关推荐

  1. Leetcode--134. 加油站

    在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升.你从其中的一个加 ...

  2. leetcode134. 加油站

    一:论语 二:题目 三:上码(暴力解法超时 但方法二还是可以的) // class Solution {// public: // int canCompleteCircuit(vector<i ...

  3. LeetCode琅琊榜第九层-加油站问题(图表法)

    LeetCode134,加油站 难度:中等 博主空间与往期力扣 题目链接 目录 作者原始思路 "隐藏式"贪心算法 思想与代码简述 问题 反省 最优易解法-图表法 案例分析 算法思想 ...

  4. 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  5. python股票交易最大值最多可以完成k比交易_leetcode_贪心算法_python

    leetcode455.分发饼干 题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最 ...

  6. LeetCode算法题整理(200题左右)

    目录 前言 一.树(17) 1.1.后序遍历 1.2.层次遍历 1.3.中序 1.4.前序 二.回溯(20) 2.1.普通回溯 2.2.线性回溯:组合.排列.子集.分割 2.3.矩阵回溯 三.二分查找 ...

  7. leetcode解题总览

    3/22更新 剑指offer 题目链接 建议大部分题都会做,都能比较快速且准确的写出来.关于做题方式,我的建议是:一道一道刷即可,因为难度一般,不用系统的学习什么知识,遇到实在不会的就跳过即可. 我这 ...

  8. 剑指offer第2版Python题解(更新中)

    O(n^2)排序 冒泡排序.插入排序与选择排序(Python)_NLP_victor的博客-CSDN博客 归并 归并排序(Python)_NLP_victor的博客-CSDN博客 快排 快速排序(Py ...

  9. 加油python_力扣——gas station (加油站) python实现

    题目描述: 中文: 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] ...

  10. 几道加油站加油相关问题:最小加油次数、能否回到起点

    几道加油站加油相关问题 1.选一个加油站能走完一圈:leetcode134. Gas Station 2.加油最少次数(easy) 3.加油最少次数(hard):leetcode871. Minimu ...

最新文章

  1. Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断后的处理
  2. log4j与commons-logging slf4j的关系
  3. cvs linux权限,Linux下CVS+ACL的权限控制是什么? 爱问知识人
  4. mxnet优化器 SGD_GC
  5. python画旺仔代码_美术生把旺仔牛奶画成抖音网红,看清画的是谁,网友:确认过眼神...
  6. Go笔试题目Go与PHP分别实现方法
  7. Azure人工智能认知服务(AI·机器学习)
  8. 停车场管理系统c语言程序,c语言程序设计 停车场管理系统 停车场有1-20个车位号,设计一个停车场管理系统,实现停车场管理...
  9. mysql 5.7 hint_新特性解读 | MySQL 8.0 新增 HINT 模式
  10. 从交换机分析网络风暴
  11. 小木棍 [数据加强版]*
  12. vue 插值表达式,v-cloak,v-text,v-html,以及v-bind,v-on
  13. 一篇了解TrustZone
  14. 带你了解电机驱动板的四大分类
  15. FITS python
  16. 海豚浏览器显示连接服务器失败,海豚浏览器常见问题解答
  17. css超出显示...(单行、多行)
  18. 微信头像存储mysql数据库
  19. zzd 的割草机(Lawnmower)
  20. pycharm设置项目编码

热门文章

  1. 《Java大学教程》—第23章 Java网络编程
  2. 7.1-7.31推荐文章汇总
  3. phpstudy连接SQL Server 2008数据库 以及 php使用sql server出现乱码解决方式
  4. 算法面试:精选微软经典的算法面试100题(第21-25题)
  5. WinAPI 字符及字符串函数(13): lstrcmp、lstrcmpi - 对比串
  6. cd oracle home/dbs,Oracle专家高级编程学习笔记
  7. 拓端tecdat:R语言贝叶斯广义线性混合效应(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
  8. (3)Matplotlib_subplot, subplots
  9. SQL Server添加Check约束
  10. 单结晶体管的导电特性_室温制备自愈合、可注射PEDOT:PSS导电水凝胶