134. 加油站

在一条环路上有 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) {

int g = 0, res = 0, start = 0;// 记录车子当前总油量,一路的开销,当前起始的位置

for(int i=0;i

g += gas[i] - cost[i];// 加的油扣掉花费的油

res += gas[i] - cost[i];// 计算一路的开销

if(g < 0) {

g = 0;// 不能到达下一个加油站,清零,从下一个开始

start = i + 1;// 记录下一个起点

}

}

return res < 0 ? -1: start;

}

}

用java写一个汽车加油的程序_Java实现 LeetCode 134 加油站相关推荐

  1. java递归怎么写_什么是递归?用Java写一个简单的递归程序

    什么是递归?用Java写一个简单的递归程序 递归的定义 递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决. 递归的要素 自定义递归函数,并确定函数的基本功能 ...

  2. java写一个服务定时采集数据_java实现定时任务解决方案

    1. 总结常见的实现定时任务的几种方法 thread实现 [原理:通过创建一个线程,让他在while循环里面一直运行,用sleep() 方法让其休眠从而达到定时任务的效果.] Timer类 Sched ...

  3. java写的围棋游戏小程序_java写的围棋游戏小程序

    开发思路 调用applet类作为父类.在init事件中调用Qipan类,作出panel,上加控制用控件.在paint事件里调用drawline函数画棋盘,注册鼠标动作.鼠标单击位置上用drawoval ...

  4. java写一个会动的圆_JAVA实现一个圆形的移动,画出来的圆形移动,我的圆它不动呀...

    展开全部 import java.awt.Graphics; import java.awt.Image; import javax.swing.JFrame; public class JoinDe ...

  5. Java 百度AI 写一个简单的手势识别程序

    教程地址:请关注我的https://edu.csdn.net/course/detail/23001 Java写一个简单的手势识别程序,这里采用百度是AI,视觉技术中的人体分析中的手势识别,识别图片中 ...

  6. 用Java写一个简易五子棋游戏

    一. 程序基本思路: 1.写窗口.棋盘面板.控制面板: 2.绘制棋盘: 3.绘制棋子: 4.添加组件功能: 5.判断输赢: 6.悔棋: 7.复盘. 二.实际操作 1.创建窗口.添加面板 package ...

  7. 无聊的时候怎么办?教你用java写一个简单挂机打金币小游戏吧!

    无聊的时候怎么办?教你用java写一个超简单挂机打金币小游戏吧! Java写一个挂机打金币程序 1.Java的面向对象 2.基础打金的分析 3. Robot介绍以及Demo演示 4.挂机打金程序如何去 ...

  8. 用Java写一个年薪计算器,助你简单完成大量税前税后总薪计算量

    每个有规模一点的公司都会有会计部门这是毋庸置疑的,但是会计的工作真的如大部分人想的那么简单,只是在每个月的最后几天才忙得不可开交吗 ? 答案当然不是,不然这个岗位早就人满为患了. 目前就我了解到的会计 ...

  9. 怎样用java写一个简单的文件复制程序

    怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...

最新文章

  1. 军规13 降低流量和电量消耗
  2. MySQL配置全文索引
  3. hdu5698瞬间移动(组合数,逆元)
  4. 打不开mysql exe文件怎么打开文件_exe文件打不开怎么办?
  5. 使用命令行刷新Magento索引管理 Rebuilt Magento Indexes in terminal with php-cli
  6. au如何关闭预览编辑器_在线IDE开发入门之从零实现一个在线代码编辑器
  7. Eclipse用法和技巧十二:快速复制一行
  8. 高中信息技术——进制与编码刷题点整理
  9. 解决Hbuliderx的代码不能自动补全的问题
  10. EyouCms前台GetShell漏洞复现
  11. android 陀螺仪滤波_高精度MEMS陀螺仪的滤波算法研究
  12. 京东VS淘宝:待付款订单-再次支付方案对比
  13. CHERRY樱桃机械键盘按键
  14. 光猫的ip地址段和路由器ip地址段互换
  15. windows服务器硬盘怎么扩容,windows2016 扩容硬盘
  16. 解决margin坍塌
  17. 赶时间发布 ChatGPT 竞品后,Google 遭员工反讽:太仓促、拙劣、非 Google Style
  18. JS_画中画,video视频播放器
  19. 国产开源优秀新一代MPP数据库StarRocks入门之旅-数仓新利器(上)
  20. Pygame实战:升级后的2048小游戏—解锁新花样,根本停不下来【附源码】

热门文章

  1. 【四二学堂】标准GPS坐标,转换成百度坐标
  2. 2023华为od面经~ (笔试 HR资面 技术面 一面 二面 综面)
  3. win7 最常用的快捷键 ( 完全可以使用键盘来操作)
  4. centos7常用快捷键
  5. [JZOJ4274] [NOIP2015模拟10.28B组] 终章-剑之魂 解题报告(二进制)
  6. WMware中ubuntu移动鼠标时鼠标消失解决办法
  7. 冷冻莴苣的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 怎么判断自己是否适合转行软件测试
  9. 【python】MAC安装openCV人脸识别
  10. js监听浏览器tab页面变化