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

[Java][Leetcode middle] 134. 加油站

方法一,自己想的,超时

双重循环
从第一个点开始循环尝试,
如果最终能走到终点,说明可行。

public int canCompleteCircuit(int[] gas, int[] cost) {int res = -1;int n = gas.length;int remainGas;int j;for (int i = 0; i < n; i++) {remainGas = 0;for (j = i; j < n + i; j++) {int tmp = j;if (tmp >= n) {tmp = tmp - n;}remainGas += gas[tmp] - cost[tmp];if (remainGas < 0) {break;}}if (j == n + i) {res = i;break;}}return res;}

方法二,官方题解

利用结论:
假设x到不了y+1,那么[x,y]中的任意一个节点都无法到达y+1。那么循环直接从y+1开始即可
改造我们的代码

public int canCompleteCircuit(int[] gas, int[] cost) {int res = -1;int n = gas.length;int remainGas;int cnt = 0;int tmp = 0;for (int i = 0; i < n; i++) {remainGas = 0;for (cnt = 0; cnt < n; cnt++) {tmp = (i + cnt)%n;remainGas += gas[tmp] - cost[tmp];if (remainGas < 0) {break;}}if (cnt == n) {res = i;break;}else {i = i + cnt;}}return res;}

评论区做法

利用唯一解的特性;
使用一次遍历,如果存在解,那么解一定出现在最耗油的一段路之后。

    public int canCompleteCircuit3(int[] gas, int[] cost) {int res = -1;int n = gas.length;int remainGas = 0;int minRemain = Integer.MAX_VALUE;int use = 0;for (int i = 0; i < n; i++) {use = gas[i] - cost[i];remainGas += use;if (remainGas <  minRemain) {minRemain = remainGas;res = i;}}if(remainGas >= 0){return (res + 1)%n;}else {return -1;}}
http://www.lryc.cn/news/2378576.html

相关文章:

  • DeepSeek 大模型部署全指南:常见问题、优化策略与实战解决方案
  • 嵌入式培训之数据结构学习(五)栈与队列
  • RabbitMQ--进阶篇
  • Android Studio报错Cannot parse result path string:
  • matlab求矩阵的逆、行列式、秩、转置
  • 关于网站提交搜索引擎
  • 计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM-Attention时间序列预测(完整源码和数据)
  • 二进制与十进制互转的方法
  • 05、基础入门-SpringBoot-HelloWorld
  • LeetCode 153. 寻找旋转排序数组中的最小值:二分查找法详解及高频疑问解析
  • 基于QT(C++)OOP 实现(界面)酒店预订与管理系统
  • 人工智能100问☞第25问:什么是循环神经网络(RNN)?
  • 机械元件杂散光难以把控?OAS 软件案例深度解析
  • 游戏引擎学习第289天:将视觉表现与实体类型解耦
  • 【Linux网络】ARP协议
  • MUSE Pi Pro 开发板 Imagination GPU 利用 OpenCL 测试
  • 多线程与线程互斥
  • 使用Spring Boot和Spring Security构建安全的RESTful API
  • 游戏引擎学习第287天:加入brain逻辑
  • continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手
  • 2025年EB SCI2区TOP,多策略改进黑翅鸢算法MBKA+空调系统RC参数辨识与负载聚合分析,深度解析+性能实测
  • .NET 中管理 Web API 文档的两种方式
  • 常见三维引擎坐标轴 webgl threejs cesium blender unity ue 左手坐标系、右手坐标系、坐标轴方向
  • 【HTML】个人博客页面
  • 论文解读:ICLR2025 | D-FINE
  • 9.DMA
  • 大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN
  • python基础语法(三-中)
  • 【gitee 初学者矿建仓库】
  • 思路收集文档