Leetcode--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 result = 0;
    int sum = 0;
    int hasResult = 0;//用于判断是否有跑完全程所需的油
    for (int i = 0; i < gas.length; i++) {
        hasResult +=gas[i]-cost[i];
        if(sum > 0) {
            sum += gas[i]-cost[i];
        } else {
            sum = gas[i]-cost[i];
            result = i;
        }
    }
    if(hasResult>=0)
    {
        return result;
    }
    return -1;
    }
}

完整的代码:


public class Solution134 {
public static int canCompleteCircuit(int[] gas, int[] cost) {
    int result = 0;
    int sum = 0;
    int hasResult = 0;//用于判断是否有跑完全程所需的油
    for (int i = 0; i < gas.length; i++) {
        hasResult +=gas[i]-cost[i];
        if(sum > 0) {
            sum += gas[i]-cost[i];
        } else {
            sum = gas[i]-cost[i];
            result = i;
        }
    }
    if(hasResult>=0)
    {
        return result;
    }
    return -1;
    }
public static void main(String[] args)
{
    int gas[] = {5,8,2,8};
    int cost[] = {6,5,6,6};
    System.out.println(canCompleteCircuit(gas,cost));
}
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原创工作发表难之叶公好龙

来源&#xff1a;张志东科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-2344-1265601.html 最近&#xff0c;科学网上一个热点话题是原创工作发表难不难&#xff1f;以真傻为代表的认为原创工作发表难&#xff0c;以王立新为代表的认为原创工作发表不难。那么&…

RSA 前段加密 java 后台解密 已调试通过

本人整理网上的。好多网上的调不通。在这里把调试好的贴出来。 1. 异步获取公钥&#xff08;后台获取&#xff09;&#xff1b;你也可以将公钥串写在页面上&#xff1b; var publicKey null; $.ajax({ url: ctx"/userLogin.do?methodgetRSAPublicKey", &#xf…

java字符的输入流_Java:字节流和字符流(输入流和输出流)

InputStream是抽象基类&#xff0c;所以它不可以创建对象&#xff0c;但它可以用来“接口化编程”&#xff0c;因为大部分子类的函数基类都有定义&#xff0c;所以利用基类来调用函数。FileInputStream是用来读文件数据的流&#xff0c;所以它需要一个文件对象用来实例化&#…

Leetcode--881. 救生艇

第 i 个人的体重为 people[i]&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&#xff0c;但条件是这些人的重量之和最多为 limit。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 示例 1&#xff1a; 输入&#xff1a;people [1,2],…

任正非内部重磅发言:华为不可能简单学阿里、亚马逊

来源&#xff1a;券商中国辞旧迎新之际&#xff0c;华为创始人任正非此前在华为企业业务及云业务汇报会上的发言于华为心声社区曝光。任正非指出&#xff0c;华为企业业务要聚焦战略重点&#xff0c;继续做减法&#xff0c;收缩企业业务做战线&#xff0c;认真弄清楚做作战模型…

日报 18/06/25 26

io流 available public int available()throws IOException 返回从该输入流中可以读取&#xff08;或跳过&#xff09;的字节数的估计值&#xff0c;而不会被下一次调用此输入流的方法阻塞。 下一个调用可能是同一个线程或另一个线程。 这个多个字节的单个读取或跳过将不会被阻…

java8 迭代set集合_JavaSE(八)集合之Set

2.2、HashSet特点不能保证元素的排列顺序&#xff0c;顺序可能和添加的顺序不同&#xff0c;顺序也有可能发生变化。HashSetf不是同步的&#xff0c;如果多个线程同时来访问一个 HashSet&#xff0c;假设有两个或者两个以上线程同时修改了HashSet 集合时&#xff0c;则必须通过…

AI 发展方向大争论:混合AI ?强化学习 ?将实际知识和常识整合到AI中 ?

一个仿人机器人的延伸手。机器人常常使用强化学习来加以训练来源&#xff1a;云头条作者&#xff1a;Ben Dickson是一名软件工程师&#xff0c;还是探讨技术在如何解决和带来问题的TechTalks博客的创始人。2010年代对于AI界来说意义重大&#xff0c;这归功于深度学习领域取得了…

Leetcode--621. 任务调度器

给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行&#xff0c;并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务&#xff0c;或者在待命状态。 然…

吴恩达:2020 年,这些 AI 大事件让我无法忘怀...

作者&#xff1a;吴恩达编译&#xff1a;陈大鑫、贝爽编辑&#xff1a;青暮转自&#xff1a;AI科技评论日前&#xff0c;吴恩达在圣诞节之际回顾了2020年AI的一些重大事件&#xff0c;包括AI应对新冠疫情、数据集存在种族偏见、对抗虚假信息算法、AlphaFold预测蛋白质三维结构、…

java工程师的一生_百看不厌之一张图诠释程序员的一生

原标题&#xff1a;百看不厌之一张图诠释程序员的一生01百看不厌系列之一张图诠释程序员的一生。02变得越来越强了...03不知道是干什么的&#xff0c;但又不敢删。。。04当前端的人抱怨Java 时&#xff0c;C程序员05给产品经理设计了一款趁手的宝贝06离职程序员交接项目07这位压…

好久没玩laravel了,5.6玩下(三)

好久没玩laravel了&#xff0c;5.6玩下&#xff08;三&#xff09; 好了&#xff0c;基础的测试通了&#xff0c;咱们开始增删改了 思路整理 先创建项目功能控制器 然后设置路由访问规则 然后开发项目的增删改功能 1 先创建项目的控制器 php artisan make:controller ProjectsC…

Leetcode--870. 优势洗牌

给定两个大小相等的数组 A 和 B&#xff0c;A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。 返回 A 的任意排列&#xff0c;使其相对于 B 的优势最大化。 示例 1&#xff1a; 输入&#xff1a;A [2,7,11,15], B [1,10,4,11] 输出&#xff1a;[2,11,7…

OpenAI祭出120亿参数魔法模型!从文本合成图像栩栩如生,仿佛拥有人类的语言想象力...

来源&#xff1a;AI科技评论作者&#xff1a;OpenAI编译&#xff1a;贝爽、陈大鑫前几个月GPT-3刚刚问世的时候&#xff0c;能够根据一段话就写出一个小说、一段哲学语录&#xff0c;就足以令AI圈为之感到兴奋。然而2020年刚刚开始没多久&#xff0c;OpenAI又实现一重大突破&am…

java 关键字 sizeof_Java 基本数据类型 sizeof 功能

这是一个程序&#xff0c;java中没有现成的sizeof的实现&#xff0c;原因主要是java中的基本数据类型的大小都是固定的&#xff0c;所以看上去没有必要用sizeof这个关键字。实现的想法是这样的&#xff1a;java.lang.Runtime类中有一些简单的能涉及到内存管理的函数&#xff1a…

MySQL快速生成连续整数

很多时候需要用到连续的id进行数据对比&#xff0c;如判断是否连续等问题。那么&#xff0c;生成连续整数的方式有多种&#xff0c;首先容易想到的是逐步循环&#xff0c;如果想生成1kw条记录&#xff0c;则需要循环1kw次进行插入&#xff0c;那么有没有其他方式呢&#xff0c;…

MySQL小问题:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents...

这是因为时区设置不对 问题背景&#xff1a; 在运行storm项目&#xff0c;进行页面显示的时候&#xff0c;报错&#xff1a; java.sql.SQLException: The server time zone value is unrecognized or represents more than one time zone. 这是时区的问题。 我采用的第一个…

中国电子信息工程科技发展十四大趋势(2021)

来源&#xff1a;科技日报、中国电子报&#xff08;转载请注明来源&#xff09;编辑&#xff1a;蒲蒲1月5日&#xff0c;中国工程院信息与电子工程学部、中国信息与电子工程科技发展战略研究中心发布“中国电子信息工程科技发展十四大趋势&#xff08;2021&#xff09;”&#…

rosserial_java_[学习笔记]Rosserial实现Windows-ROS交互操作(1)

安装sudo apt-get install ros-indigo-rosserial-windowssudo apt-get install ros-indigo-rosserial-server编译rosrun rosserial_windows make_libraries.py my_library运行后会产生一个my_library文件夹&#xff0c;在my_library这个文件夹下会生成ros_lib文件夹Windows下创…

Chapter 4 Invitations——25

"So you are trying to irritate me to death? Since Tylers van didnt do the job?" "所以你想要把我气死&#xff1f;因为Tyler的卡车没有做到对不&#xff1f;" Anger flashed in his tawny eyes. His lips pressed into a hard line, all signs of h…