当前位置: 首页 > backend >正文

Leetcode134加油站

题目链接

134

题意图解:

在这里插入图片描述

  • 题目给了n个节点,这些节点呈现环状,每次到一个低点要消耗cost[i]的油量。
    从中我们可以得出一个结论:看一个点能不能到下一个点,就要用当前的油量减去消耗的量,那么gas[i] - cost[i],就表明这个点到了下一个点之后剩余的油量,如果是负数,说明它走不到下一个点,会在半路熄火。

  • 那么它的累加和的意义就是从累加起点到累加终点剩余的油量,如果为负数,那么说明我们当前选取的起点无法到达目前的终点,为正数好理解,还有余量,只要大于等于0,都是可以的。

  • 然后我们继续往下思考:

  1. 题目场景是个环,给的数据结构是数组,是线性的,怎么模拟实现一个环?多重循环会超时且麻烦,回想能循环的,能用数组模拟的结构,便是循环队列,在循环队列中,我们就是采用下标对数组长度取模来实现一个循环的数组的,这样就可以模拟环结构了。
  2. 我们发现当前起点选取不合理,该怎么调整呢?

在这里插入图片描述

我们来看左程云举得例子,如果起点l 到 终点r时为负数,那么说明在r - 1的时候余量还是大于等于0的,也就是说我们从l 到r - 1获取的油量刚好是大于等于0的,如果我们不从 l 开始呢?这意味着我们会少加一些余量,那我们想想,之前余量没少加的时候都到达不了l,现在余量少加了,还能到吗?显然不能,所以此时我们要让左边界来到r + 1的位置重新进行滑动窗口右边界的扩展。

代码

class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int n = gas.length;for (int r = 0, l = 0, sum; l < n; l = r + 1, r = l) { sum = 0;while (sum + gas[r % n] - cost[r % n] >= 0) { if (r - l + 1 == n) { return l;}sum += gas[r % n] - cost[r % n];r ++;}}return -1;}
}
http://www.xdnf.cn/news/7184.html

相关文章:

  • u深度学习 神经网络图像数据的预处理全解
  • RDD-数据清洗
  • 02 Nginx虚拟主机
  • 【Linux】第十七章 归档和传输文件
  • 为什么el-select组件在下拉选择后无法赋值
  • 机器学习西瓜书
  • 我的电赛(简易的波形发生器大一暑假回顾)
  • 字节跳动开源通用图像定制模型DreamO,支持风格转换、换衣、身份定制、多条件组合等多种功能~
  • 【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】
  • 【C语言】字符串函数及其部分模拟实现
  • JavaScript:元宇宙角色动作与移动
  • 6.2.5图的基本操作
  • TYUT-企业级开发教程-第二章
  • 学习STC51单片机05(芯片为STC89C52RC)
  • 发布时将多个bpl 打包成一个bpl的方法,或者说:不需要vcl60.bpl情况下 18.5K的exe 照常可以运行。
  • deepseek系列论文汇总(时至2025.5)
  • 2023 睿抗机器人开发者大赛CAIP-编程技能赛-高职组(省赛)解题报告 | 珂学家
  • AGI大模型(24):通过LangChain的接口来调用OpenAI对话
  • 【AWS入门】Amazon Bedrock简介
  • Compose笔记(二十四)--Canvas
  • 项目:在线音乐播放服务器——基于SSM框架和mybatis
  • redis持久化和数据淘汰方案
  • NB-IoT技术深度解析:部署模式与节能机制全指南
  • SONiC系统之高速数据遥测High Frequency Telemetry
  • Java中的伪共享(False Sharing):隐藏的性能杀手与高并发优化实战
  • Python训练营---Day29
  • 劳特巴赫trace32自定义调试界面
  • mysql的高可用
  • 基于MCP的AI Agent应用开发实践
  • 类的加载过程详解