134. 加油站

2023-11-09

Powered by:NEFU AB-IN

Link

134. 加油站

  • 题意

    在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。
    你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。
    给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。

  • 思路

    假设i为起点,且i最多不能走到j,结论:[i, j]之前任意起点也 不能走到j
    证明:k是可以走到的,所以left[k] >= 0(即从左边走过来还剩下有油)。 如果把k当作起点即left[k]=0,那么还是走不到j,所以下一次枚举起点,可以直接跳过[i- j],O(n)

  • 代码

    class Solution {
    public:
        int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
            int n = gas.size();
            for (int i = 0, j; i < n; ) {  // 枚举起点
                int left = 0;
                for (j = 0; j < n; j ++ ) {
                    int k = (i + j) % n;
                    left += gas[k] - cost[k];
                    if (left < 0) break;
                }
                if (j == n) return i;
                i = i + j + 1;
            }
    
            return -1;
        }
    };
    
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

134. 加油站 的相关文章

随机推荐

  • c#笔记2018-12-27

    using System 2018 12 27 c 学习笔记 1 c 判断if else if switch 2 循环while for do while 3 循环实例 for循环99乘法表 while 循环99乘法表 do while 循
  • 关于contenteditable = true中光标异常判定的解决方法

  • Eclipse和PyDev搭建完美Python开发环境(Windows篇)

    十一长假在家闲着没事儿 准备花点时间学习一下Python 今儿花了一个下午搭建Python的开发环境 不禁感叹 开源的东西就是麻烦啊 唉 可怜我们这些被微软宠坏了的开发人员 为什么不用别的IDE呢 IDLE是小打小闹用的 那个WingIDE
  • 如何选用GPU云服务器?

    1 相关知识了解 1 1 了解厂家 1 1 1 面向个人的平台 名称 特点 极链AI云 微信绑定送100 学生200 1024Lab云 便宜 国外 DBC支付 不知道是啥 不考虑 矩池云GPU VNC远程访问图形化桌面 操作简单 gpu种类
  • ls命令用法总结

    ls 命令可以说是linux下最常用的命令之一 a 列出目录下的所有文件 包括以 开头的隐含文件 b 把文件名中不可输出的字符用反斜杠加字符编号 就象在C语言里一样 的形式列出 c 输出文件的 i 节点的修改时间 并以此排序 d 将目录象文
  • idea的target文件夹不见了

    1 第一种方法 在2位置打上 2 第二种方法 在5里面寻找target 并删掉 3 总结 目前遇到的就这两种情况 第二种情况5中用 分开的每一个都是忽略的文件或文件夹 像 git文件 idea文件夹都可以在这里配置忽略 我知道的作用是在pr
  • Unity Xbox360 Input

    1 资料收集 2 Unity中增加键值注册 3 A键值 4 B键值 5 X键值 6 Y键值 7 LeftBumper 键值
  • 思考卷积神经网络(CNN)中各种意义

    只是知道CNN是不够 我们需要对其进行解剖 继而分析不同部件存在的意义 CNN的目的 简单来说 CNN的目的是以一定的模型对事物进行特征提取 而后根据特征对该事物进行分类 识别 预测或决策等 在这个过程里 最重要的步骤在于特征提取 即如何提
  • AltiumDesigner 绘制PCB常见问题

    1 普通过孔16mil 24mil 2 PCB双层板看到上面有大量的过孔 很多都没有用到的 这些过孔有什么用啊 答 通过大量过孔连接顶层和底层的铺铜 也就是将顶层和底层的 地 良好的连接 为接地点提供更多回路 以提高整个电路板的抗干扰能力
  • Rpm相关操作

    安装rpm包 rpm ivh your package rpm 安装过程中可能出现下面的警告或者提示 conflict with 可能是要安装的包里有一些文件可能会覆盖现有的文件 缺省时这样的情况下是无法正确安装的 强制安装即可 rpm f
  • 《数据结构与算法》实验:排序算法实验比较——选择排序 & 堆排序

    数据结构与算法 实验和课程Github资源 数据结构与算法 实验 线性结构及其应用 算术表达式求值 数据结构与算法 实验 树型结构的建立与遍历 数据结构与算法 实验 图结构的建立与搜索 数据结构与算法 实验 查找结构的实验比较 二叉查找树B
  • 同步通讯和异步通讯(简单理解)

    同步通信和异步通信 简单理解 注 本篇文章只是告诉你什么是同步通信 什么是异步通信 即使没有计算机基础的同学也适合阅读 同时也能帮助计算机专业同学更好理解这个知识点 但是如果想深入学习 还需自己翻阅资料 一 电脑完成一个读命令需要的步骤 主
  • ​Qt for Python 入门¶​

    本页重点介绍如何从源代码构建Qt for Python 如果你只想安装PySide2 与你需要运行 pip pip install pyside2 有关更多详细信息 请参阅我们的快速入门指南 此外 您可以 查看与项目相关的常见问题解答 一般
  • 【猿人学WEB题目专解】猿人学第17题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • C#socket编程——TCP协议创建服务器端和客户端并进行通信

    我们做网络通信的时候需要有通信协议 在进行socket编程的时候有两种通信协议TCP UDP 这次我们就用简单的方式在一台电脑建立TCP协议的服务器端和客户端并使之进行通信 服务器端和客户端进行连接 第一步就行在服务器端创建一个socket
  • 白名单限制

    白名单是设置可以通过的用户 其他用户不可以通过 黑名单是设置不可以通过的用户 其他用户可以通过 常用的白名单限制 数据库使用白名单限制 rds数据库在阿里云设置能够访问的IP白名单 MySQL设置白名单 1 登录mysql mysql h
  • Vue 3-计算属性的getter,setter

  • Docker Alpine安装oracle客户端

    Docker Alpine安装oracle客户端 进入docker容器 docker run it name 容器名 镜像名 latest bin sh 由镜像创建容器并进入 只有镜像无容器 或 docker exec it 容器名 bin
  • Linux ——实操篇

    Linux 实操篇 前言 vi 和 vim 的基本介绍 vi和vim常用的三种模式 正常模式 插入模式 命令行模式 vi和vim基本使用 各种模式的相互切换 vi和vim快捷键 关机 重启命令 基本介绍 注意细节 用户登录和注销 基本介绍
  • 134. 加油站

    Powered by NEFU AB IN Link 文章目录 134 加油站 题意 思路 代码 134 加油站 题意 在一条环路上有 n 个加油站 其中第 i 个加油站有汽油 gas i 升 你有一辆油箱容量无限的的汽车 从第 i 个加油