LeetCode 134 Gas Station 解题思路和python代码
题目:
There are n gas stations along a circular route, where the amount of gas at the ith station is gas[i].
You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from the ith station to its next (i + 1)th station. You begin the journey with an empty tank at one of the gas stations.
Given two integer arrays gas and cost, return the starting gas station’s index if you can travel around the circuit once in the clockwise direction, otherwise return -1. If there exists a solution, it is guaranteed to be unique.
Example 1:
Input: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
Output: 3
Explanation:
Start at station 3 (index 3) and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
Travel to station 4. Your tank = 4 - 1 + 5 = 8
Travel to station 0. Your tank = 8 - 2 + 1 = 7
Travel to station 1. Your tank = 7 - 3 + 2 = 6
Travel to station 2. Your tank = 6 - 4 + 3 = 5
Travel to station 3. The cost is 5. Your gas is just enough to travel back to station 3.
Therefore, return 3 as the starting index.
Example 2:
Input: gas = [2,3,4], cost = [3,4,3]
Output: -1
Explanation:
You can’t start at station 0 or 1, as there is not enough gas to travel to the next station.
Let’s start at station 2 and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
Travel to station 0. Your tank = 4 - 3 + 2 = 3
Travel to station 1. Your tank = 3 - 3 + 3 = 3
You cannot travel back to station 2, as it requires 4 unit of gas but you only have 3.
Therefore, you can’t travel around the circuit once no matter where you start.
Constraints:
n == gas.length == cost.length
1 <= n <= 105
0 <= gas[i], cost[i] <= 104
解题思路:
这道题目中,我们已知每个油站可以获得的油量,以及前往下一个油站的油耗,我们需要判断是否有一个油站可以作为起始点,让车子有足够的油耗遍历每个油站,跑完一整圈。
如果所有油站的油量总和要小于油耗的总和,车子一定跑不完一圈,返回 -1。
答案是唯一的,所以有且只有一个油站可以让车子跑完一圈。
首先,检查是否所有油站的油量总和要大于油耗的总和。
使用贪婪算法找到这个能跑完一圈的起始油站。通过记录现有的油量 current gas,如果一个油站的现有油量小于0,那么我们一定不可能继续跑完一整圈。所以我们把下一个油站假设为起始点,重设 current gas为0,再作检查。
class Solution(object):def canCompleteCircuit(self, gas, cost):""":type gas: List[int]:type cost: List[int]:rtype: int"""total_gas = 0current_gas = 0start_position = 0for i in range(len(gas)):total_gas += gas[i] - cost[i]current_gas += gas[i] - cost[i]if current_gas < 0:start_position = i + 1 # 设置下一个油站为我们想要找的起始点current_gas = 0if total_gas < 0:return -1else:return start_position
time complexity为O(n)
相关文章:
LeetCode 134 Gas Station 解题思路和python代码
题目: There are n gas stations along a circular route, where the amount of gas at the ith station is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from the ith station to its next (i 1)th station. You …...
服务攻防
171、一次完整的 HTTP 请求过程 域名解析 --> 发起 TCP 的 3 次握手 --> 建立 TCP 连接后发起 http 请求 --> 服务器 响应 http 请求,浏览器得到 html 代码 --> 浏览器解析 html 代码,并请求 html 代码中的资源(如 js、 css…...
leetcode 力扣算法题 快慢指针 双指针 19.删除链表的倒数第n个结点
删除链表的倒数第N个结点 题目要求题目示例解题思路从题目中的已知出发思考寻找目标结点条件转换核心思路 需要注意的点改进建议 完整代码提交结果 题目要求 给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 题目示例 示例 1࿱…...
网络五层模型:物理层、数据链路层、网络层、传输层、应用层,分别解决了什么问题?
网络五层模型(也称为TCP/IP模型的简化版本)将网络通信过程分为五个层次,每一层都解决了特定的问题。以下是每一层的详细解释及其解决的问题: 1. 物理层(Physical Layer) 解决的问题:数据的物理…...
OpenCV视频I/O(18)视频写入类VideoWriter之初始化 VideoWriter 对象的函数open()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 初始化或重新初始化视频编写器。 该方法打开视频编写器。参数与构造函数 VideoWriter::VideoWriter 中的相同。 cv::VideoWriter::open() 函数用…...
大数据处理从零开始————4.认识HDFS分布式文件系统
1.分布式文件系统HDFS 1.1 认识HDFS 当单台服务器的存储容量和计算性能已经无法处理大文件时,分布式文件系统应运而生。什么是分布式系统,分布式系统是由多个独立的计算机或节点组成的系统,这些计算机通过网络连接ÿ…...
jwt认证课件讲解
JWT 基本概念 在用户登录后,我们需要在不同请求之间记录用户的登录状态,常用方式一般有三种:Cookie,Session和Token。 这里我们使用第三种Token令牌方式来实现认证鉴权,采用Json Web Token认证机制(简称…...
【判断推理】逻辑基础
1.1 命题 用语言、符号或者式子表达的,可以判断真假的陈述句称为命题,一般写为 若p,则q 真命题:判断为真的语句假命题:判断为假的语句 eg1:小张是中国人(若是小张,则是中国人&#…...
AcWing 655:天数转换 ← 整除、求余
【题目来源】https://www.acwing.com/problem/content/657/【题目描述】 读取对应于一个人的年龄(以天为单位)的整数值,并转化为年,月和日表示方式输出,年、月、日分别对应 ano(s), mes(es), dia(s)。 注意:…...
【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
使用git clone 时报错unable to access xxx: SSL certificate problem: 这个报错通常是由于SSL证书问题引起的。通常可以按照以下步骤进行排查: 检查网络连接:确保你的网络连接正常,可以访问互联网。尝试使用其他网站或工具测试网络连接是否正…...
算法笔记(十三)——BFS 解决最短路问题
文章目录 迷宫中离入口最近的出口最小基因变化单词接龙为高尔夫比赛砍树 BFS 解决最短路问题 BFS(广度优先搜索) 是解决最短路径问题的一种常见算法。在这种情况下,我们通常使用BFS来查找从一个起始点到目标点的最短路径。 迷宫中离入口最近的出口 题目:…...
Android 简单实现联系人列表+字母索引联动效果
效果如上图。 Main Ideas 左右两个列表左列表展示人员数据,含有姓氏首字母的 header item右列表是一个全由姓氏首字母组成的索引列表,点击某个item,展示一个气泡组件(它会自动延时关闭), 左列表滚动并显示与点击的索引列表item …...
自动驾驶-问题笔记-待解决
参考线的平滑方法 参考线平滑算法主要有三种: 离散点平滑;螺旋曲线平滑;多项式平滑; 参考链接:参考线平滑 对于平滑方法,一直不太理解平滑、拟合以及滤波三者的作用与区别; 规划的起点&#x…...
在掌控板中加载人教版信息科技教学指南中的educore库
掌控板中加载educore库 人教信息科技数字资源平台(https://ebook.mypep.cn/free)中的《信息科技教学指南硬件编程代码说明》文件中提到“本程序说明主要供教学参考。需要可编程主控板须支持运行MicroPython 脚本程序。希望有更多的主控板在固件中支持ed…...
关于CSS Grid布局
关于CSS Grid布局 实际效果参考 参考代码 <template><view class"baseInfo"><up-image class"cover" height"160rpx" width"120rpx" :src"bookInfo.cover"><template #error><view style"…...
初始爬虫12(反爬与反反爬)
学到这里,已经可以开始实战项目了,多去爬虫,了解熟悉反爬,然后自己总结出一套方法怎么做。 1.服务器反爬的原因 服务器反爬的原因 总结: 1.爬虫占总PV较高,浪费资源 2.资源被批量抓走,丧失竞争力…...
成像基础 -- 最大对焦清晰的物距计算
最大对焦清晰的物距计算 1. 基本概念 最大对焦清晰的物距通常与景深(Depth of Field, DOF)相关,尤其是无穷远处的物体可以被清晰对焦到的距离,称为超焦距(Hyperfocal Distance)。通过计算超焦距ÿ…...
win10服务器启动且未登录时自动启动程序
场景:公司服务器安装了几个程序,当服务器断电重启之后希望程序能自动打开,而不需要手动登录服务器打开。 因为软件是自己开发的所以安全方面这里没有考虑。 1.打开服务器管理器,点击工具,选择任务计划程序 2.在任务计…...
算法专题四: 前缀和
目录 1. 前缀和2. 二维前缀和3. 寻找数组的中心下标4. 除自身以外数组的乘积5. 和为k的子数组6. 和可被K整除的子数组7. 连续数组8. 矩阵区域和 博客主页:酷酷学!!! 感谢关注~ 1. 前缀和 算法思路: 根据题意, 创建一个前缀和数组, dp[i] dp[i -1] arr[i], 再使用前缀和数组,…...
【Linux】基础IO(文件描述符、缓冲区、重定向)
🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12625432.html 目录 前言 C文件IO相关操作 系统文件I/O open open函数返回值 文件描述符fd re…...
新手零基础入门CAN总线:借助快马AI生成可运行代码理解通信机制
作为一个刚接触嵌入式开发的菜鸟,最近被导师要求学习CAN总线协议。面对手册里密密麻麻的寄存器配置和报文格式说明,我一度怀疑自己是不是选错了专业方向。直到发现了InsCode(快马)平台,用它的AI生成功能快速搭建了一个可运行的CAN通信demo&am…...
【手把手实战!fMRI数据预处理全流程解析】SPM12操作指南
1. fMRI数据预处理入门:为什么需要SPM12? 第一次接触fMRI数据分析的朋友,往往会被各种专业术语吓到——DICOM、NIFTI、头动校正、空间标准化...这些名词听起来就让人头大。但别担心,就像我第一次在实验室处理数据时导师说的&…...
千问3.5-2B快速部署:Docker镜像一键run,7860端口自动监听,无需端口映射配置
千问3.5-2B快速部署:Docker镜像一键run,7860端口自动监听,无需端口映射配置 1. 千问3.5-2B模型介绍 千问3.5-2B是Qwen系列的小型视觉语言模型,它能够同时理解图片和生成文本。这个模型特别适合需要结合视觉和语言理解的任务场景…...
万象视界灵坛快速部署:GitLab CI流水线自动触发镜像构建与K8s滚动更新
万象视界灵坛快速部署:GitLab CI流水线自动触发镜像构建与K8s滚动更新 1. 项目概述 万象视界灵坛(Omni-Vision Sanctuary)是一款基于OpenAI CLIP技术的高级多模态智能感知平台。该平台通过创新的像素风格界面,将复杂的语义对齐过…...
Mirage Flow 与卷积神经网络(CNN)的跨模态融合应用
Mirage Flow 与卷积神经网络(CNN)的跨模态融合应用 你有没有想过,让机器不仅能“看见”图片,还能像人一样“理解”并“描述”图片里的故事?比如,给一张复杂的医学影像,它不仅能圈出病灶&#x…...
腾讯文档协作全攻略:从权限设置到区域锁定,团队办公效率翻倍
腾讯文档团队协作高阶指南:权限控制与区域锁定的艺术 在数字化办公时代,团队协作的效率往往决定了项目的成败。作为国内领先的在线协作文档工具,腾讯文档凭借其流畅的实时协作体验和丰富的权限管理功能,已经成为众多团队的首选工具…...
基于宝塔面板与Docker Compose快速部署Dify最新版实战指南
1. 为什么选择宝塔Docker Compose部署Dify? 最近在帮几个创业团队搭建AI开发环境时,发现很多小伙伴都被复杂的部署流程劝退。传统的手动部署方式需要逐个安装Python、Redis、PostgreSQL等依赖,光是版本兼容问题就能折腾大半天。直到上个月我…...
ROS实战:5分钟搞定大华网络摄像机RTSP流接入(Ubuntu18.04+Melodic版)
ROS实战:5分钟搞定大华网络摄像机RTSP流接入(Ubuntu18.04Melodic版) 在智能机器人开发领域,实时视频流处理是构建环境感知系统的核心能力之一。大华作为安防行业领先品牌,其网络摄像机被广泛应用于工业检测、智能巡检等…...
【架构实战】健康检查与故障转移机制
一、为什么需要健康检查 在分布式系统中,服务实例可能因为各种原因变得不可用,而调用方却毫不知情,继续向故障实例发送请求,导致大量失败。常见的服务不可用场景:- 进程假死:Java进程存在但无法响应请求&am…...
5个维度深度评估:哪款内容解锁工具真正值得投入时间?
5个维度深度评估:哪款内容解锁工具真正值得投入时间? 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字信息时代,付费墙已成为内容获取的主要障…...
