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

leetcode------Gas Station

标题:Gas Station
通过率:25.7%
难度:中等

There are N gas stations along a circular route, where the amount of gas at station i is gas[i].

You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i+1). You begin the journey with an empty tank at one of the gas stations.

Return the starting gas station's index if you can travel around the circuit once, otherwise return -1.

Note:
The solution is guaranteed to be unique.

 

本题看半天不明白什么意思,网上有一大堆的解法各种动态规划什么的。我感觉都不靠谱,下面我们分析:

先分析暴力破解,就是从每一个点出发计算一次,看看最后是否成立。那么时间复杂度是O(n^2)

其实一遍就能知道,

如从一个点p出发到k时油量小于0,下一次试探肯定是从k开始,

若从k开始刚好可以到数组的最后,那么不用不去测试从数组最后返回前面,

因为若能循环一次那么gas-cost总和一定大于0.所以只用确定有一个点出发可以走到最后,然后看total是否大于0,

具体看代码:

 1 class Solution:
 2     # @param gas, a list of integers
 3     # @param cost, a list of integers
 4     # @return an integer
 5     def canCompleteCircuit(self, gas, cost):
 6         if len(gas)==0 or len(cost)==0 or len(gas)!=len(cost):return -1
 7         start,total,sum=0,0,0
 8         for i in range(len(gas)):
 9             total+=(gas[i]-cost[i])
10             if sum<0:
11                 sum=gas[i]-cost[i]
12                 start=i
13             else :sum+=(gas[i]-cost[i])
14         if total<0:return -1
15         else: return start

 

转载于:https://www.cnblogs.com/pkuYang/p/4430243.html

相关文章:

  • 实用的JS代码段(表单篇)
  • 【VMCloud云平台】SCAP(四)连接公有云(二)
  • easytouch使用方法
  • Django从安装到目录创建
  • Liam的C# 学习历程(五):正则表达式(Regular Expressions)
  • 收集谷歌替代网站
  • fsync与数据库日志刷新
  • 第十六次课:Servlet实现商品用户评价
  • Canvas绘画功能(待补充)
  • RabbitMQ(六)远程连接
  • FileInputStream与FileOutputStream类
  • Octopus系列之数据上传格式要求说明
  • IIS 之 HTTP 错误 500.19(无法访问请求页面,因为该页的相关配置数据无效)
  • 依据波形的转折点文件,转换成波形文件
  • springMvc 入门学习(自动生成 springmvc 单表 两关联表 生成 及显示)
  • Angular 响应式表单 基础例子
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Invalidate和postInvalidate的区别
  • java 多线程基础, 我觉得还是有必要看看的
  • java取消线程实例
  • k8s如何管理Pod
  • MYSQL 的 IF 函数
  • mysql常用命令汇总
  • react 代码优化(一) ——事件处理
  • Redis 懒删除(lazy free)简史
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 深度解析利用ES6进行Promise封装总结
  • 深入浅出Node.js
  • 实战|智能家居行业移动应用性能分析
  • 通过几道题目学习二叉搜索树
  • 微信小程序:实现悬浮返回和分享按钮
  • 一个项目push到多个远程Git仓库
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 译自由幺半群
  • ​VRRP 虚拟路由冗余协议(华为)
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $(function(){})与(function($){....})(jQuery)的区别
  • $.ajax()方法详解
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (23)Linux的软硬连接
  • (第27天)Oracle 数据泵转换分区表
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计高校学生选课系统
  • (六)软件测试分工
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)创业的注意事项
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库