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

招聘去建设网站类网站现在 做网站 技术路线

招聘去建设网站类网站,现在 做网站 技术路线,购物网站的首页是静态,廊坊森纳特化工有限公司题目描述 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas…

题目描述

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。

给定两个整数数组 gascost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。

示例 1:

输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
输出: 3
解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。

思路分析

        首先,我们要判断一个加油站是否能到下一个加油站,需要看gas[j]>cost[j],所以我们关注的点应该是gas[j]-cost[j]。所以我们先计算出经过每个站点,油箱是增加油量还是减少油量。remainder[j]=gas[j]-cost[j]。

        然后我们判断,什么时候汽车无法绕一圈呢,也就是汽油不够呢。简单举几个例子就知道,只有在remainder[j]的总和是负数的时候才会出现。比如说remianer=[3,-1,0,-1,0],总和是1,即使大部分是0或者是负数,但还是能找到个起点,然后绕一圈。

        最后的重点就是,找出这唯一的起点(题目中说解唯一)。

思路一:联想 最大子数组和

        一开始我想到了一个类似的题目:最大子数组和,可以用到贪心、前缀和或者动态规划三种思路解决。但是这个题目求的是最大子数组和,但是本题求的是索引。改写起来的复杂度为O(2N)。

class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:column = len(gas)remainder = [0] * columnfor i in range(column):  #计算经过每个加油站油箱的增量remainder[i] = gas[i] - cost[i]if sum(remainder) < 0:return -1max_value = 0result = 0index = 0max_index = 0flag = True#这里是2*column,因为要考虑是环路,也就是循环数组for i in range(2*column):if flag: #是否要记录当前起始下标index = i%columnflag = Falseresult += remainder[i%column]if result < 0: #从当前下标无法绕一圈result = 0# 再次开始记录下标flag = Trueif result > max_value: #记录这个可能的索引max_value = resultmax_index = indexreturn max_index

思路二:贪心算法

        看到leetcode官方解,只需遍历一遍即可找出起始下标。所以对上面的代码修改,如果当前从第index个加油站出发,到第right个加油站时油箱为负数时,那么即使从index-right之间的任意加油站出发,同样无法绕过第right个加油站。比如说你选了第x个加油站(index<x<right),其实从index到x之间油箱剩余的油量肯定是大于等于0的,不然不可能到达第x个加油站。所以从index都到不了right,更别说中间的其他加油站出发了。

        所以当遇到油量为负数时,我们直接可以跳过起始和末尾这些加油站,从right+1的加油站开始重新遍历结算。

class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:column = len(gas)remainder = [0] * columnfor i in range(column):remainder[i] = gas[i] - cost[i]if sum(remainder) < 0:return -1# 如果总和不为负数,那么一定可以找到从一个点开始,能遍历全部qianzhui = 0index = 0while index < column:for j in range(index, column):qianzhui += remainder[j]if qianzhui < 0:  # 汽油不够了qianzhui = 0index = j+1breakelse:return index

http://www.yayakq.cn/news/923907/

相关文章:

  • 郓城那家网站做的好品质好的句子
  • 博罗网站建设公司百度关键字排名软件
  • 大学生做网站赚钱推广策略及推广方式
  • 城厢区住房和城乡建设局网站购买网站空间ftp设计
  • 怎么做卡商网站零基础学网页设计
  • 哪个淘宝客网站最好互联网挣钱好项目
  • 英文网站建设免费网站学习流程
  • 酒店房产网站建设wordpress 询盘插件
  • 网站思维导图例子百度指数怎么提升
  • 阜阳市建设局网站申请邮箱免费注册
  • 外贸网站如何seo推广如何在网上开店
  • 网站代做多少钱网站网站平台建设方案
  • 站长统计幸福宝下载wordpress加载条
  • 提升网站权重的策略网站建设与维护招聘
  • 济南集团网站建设流程商会网站制作
  • 西安烽盈网站建设怎么样推广自己的公司
  • 网站建设的毕业设计报告给女生做网站
  • 浙江省互联网建设网站桂林技术交流站
  • 知名网站建设公司好吗高端网站开发设计
  • 柳城企业网站开发公司农家院网站素材
  • seo建站公司企业融资方式有哪些
  • 宣传旅游网站建设的观点是什么青岛建网站选青岛博采网络
  • 游览有关小城镇建设的网站wordpress4.8内存
  • 建设农产品网站总结ppt商城小程序费用标准
  • 西宁建设网站的公司wordpress获得最新评论
  • 哪个网站可以做免费请帖建什么网站做cpa
  • 佛山新网站建设wordpress 慢 google
  • 网站开发组合做业务一般要注册哪些网站
  • 网站流量怎样挣钱免费咨询肾病专家
  • 制作网站背景怎么做网站营销定义