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

每日一题|134. 加油站|循环数组单次遍历

本题题目比较绕,理解了之后发现就是给一个一维数组表示余量,找出能够首尾相连且后构成每个位置处的累积和都是正数的索引。

首先,根据cost和gas相减,确定每个位置出发去下一个位置所剩余的gas。 

这里可以直接统计全部的余量和,如果小于0可以直接return -1了。

然后开始遍历,从0开始,到len-1截止,为什么只要遍历一个数组长度就够了?

假设1-2这一段是<0的,那么意味着从0出发不能走到0,所以我们更新初始位置和cur=0,然后从2-i这一段依然是<0的,说明2出发无法走回2,所以更新位置为i,cur = 0。这时遍历到数组末尾的时候发现累积和>0,说明i可以作为初始位置,有可能走完全程。

这时,结合之前全程的累计和就可以判断:
如果全程累计和 < 0,直接-1;如果累计和>0,说明最后一次更新位置信息的索引就是出发位置(题干保证了唯一性)。

class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:gas_left = [gas[i] - cost[i] for i in range(len(cost))]total_gas = 0cur_gas = 0start = 0for i in range(len(gas_left)):total_gas += gas_left[i]cur_gas += gas_left[i]if cur_gas < 0:cur_gas = 0start = i + 1if total_gas < 0:return -1return start

http://www.mrgr.cn/news/43598.html

相关文章:

  • PriorityQueue分析
  • 数据结构阶段测试2的一点小补充
  • FRP搭建内网穿透:云服务端 + 家用Linux/Windows主机【2024】
  • 【ShuQiHere】Linux 系统内存清理指南:优化内存使用,提升系统性能
  • centos7安装配置python3环境
  • 【C++ 真题】B2049 最大数输出
  • CPU和GPU的区别
  • springboot中配置优先级
  • 基于Node2Vec的图嵌入实现过程
  • 《普林斯顿数学分析读本》中文版目录
  • UE4 材质学习笔记03(翻书(Flipbook)动画/环境混合)
  • 【Qt】Qt学习笔记(一):Qt界面初识
  • 【代码随想录Day31】贪心算法Part05
  • 【ShuQiHere】双系统指南:如何在 Linux 系统情况下安装 Windows 11,处理引导与网络问题 ️
  • yub‘s Algorithm Adventure Day6
  • Unity Shader Graph基础包200+节点及术语解释
  • 【每天学个新注解】Day 16 Lombok注解简解(十五)—@FieldNameConstants
  • Spring源码-AOP
  • Python中的自然语言处理:从基础到高级
  • A - Takahashi san 2 题解