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

营销型企业网站的功能有哪些游戏推广文案

营销型企业网站的功能有哪些,游戏推广文案,dlink nas建设网站,可以在线观看的免费资源题目 测试链接 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组…

题目
测试链接
在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

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

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

解释一下这道题,如下图所示:
路程数组gas和油耗数组cost,假设从A点出发,走到B点路程为1,消耗油量为2,1 - 2 = -1,油量不够支撑走到B点,所以如果从A点出发,无法完整的绕完一圈,B、C、D同理,这道题就是看从哪个出发点出发后,可以顺利的绕完一圈(gas和cost等长)。
在这里插入图片描述

滑动窗口
首先,先将给定的 gas[] 和 cost[] 稍稍加工一下,一次遍历,用gas[i] - cost[i],得到的新数组中包含正负数,就是从每个点出发的路程和油耗的差值,看是否有能力到达下一个目的地。

此时如果用暴力方法解这道题的话,只需要从0 ~ N - 1每个位置循环遍历,遍历N个位置。看过程中是否出现负数,如果是负数,则说明不能完成循环,如果不是,结果 >= 0,则证明可以完成循环。

我们这里直接说用滑动窗口的解题思路:
依然是先加工gas[] 和 cost[],不同的是,我们要根据加工出来的gas[] - cost[],搞出来一个2倍gas[]长度的前缀和数组

因为我们要看从 0 ~ N - 1位置中每个的出发点能否成功绕回来, gas[] - cost[] 加工出来的数组就是从每个点出发能否成功到达下一目的地的数组,所以当累加到N - 1位置时,下一步重新在加上 0 位置的值,来构造出这个2倍长度累加和数组。

这样的做的目的是,我下图中 double.length中下标4的位置,可以看做是从B点出发,又重新绕回A的0位置,下标5的位置,可以看做是从C点出发,重新绕回B点的1位置。一个数组全部可以搞定。

所有原始数组中出发的位置,在double.length中都可以将原始数组的累加和数组加工出来。
在这里插入图片描述

怎么加工?
假设我从D点出发,那么在gas - cost中求出来的累加和数组就是{3,2,2,4}(因为要重新往A点加绕回来),对应在double.length中就是划线部分,怎么得出来的呢?
划线数组中的每一个数,都减去划线部分的前一个数(1)。
在这里插入图片描述
所以,综上所述,此时我们维护一个窗口最小值,窗口范围就是gos.length,每次窗口变化后,根据窗口内最小值 - 前一个值,如果此时已然 < 0,则说明该位置不是最佳出发点。否则就认为是最佳出发点。

代码

   public static int canCompleteCircuit(int[] gas, int[] cost) {boolean[] booleans = goodArray(gas, cost);for (int i = 0; i < booleans.length; i++) {if (booleans[i]) {return i;}}return -1;}public static boolean[] goodArray(int[] gas, int[] cost) {int N = gas.length;int M = N << 1;int[] arr = new int[M];for (int i = 0; i < N; i++) {arr[i] = gas[i] - cost[i];arr[N + i] = gas[i] - cost[i];}for (int j = 1; j < M; j++) {arr[j] += arr[j - 1];}LinkedList<Integer> w = new LinkedList<>();for (int i = 0; i < N; i++) {while (!w.isEmpty() && arr[w.peekLast()] >= arr[i]) {w.pollLast();}w.addLast(i);}boolean[] ans = new boolean[N];for (int offset = 0, i = 0, j = N; j < M; offset = arr[i++], j++) {if (arr[w.peekFirst()] - offset >= 0) {ans[i] = true;}if (w.peekFirst() == i) {w.pollFirst();}while (!w.isEmpty() && arr[w.peekLast()] >= arr[j]) {w.pollLast();}w.addLast(j);}return ans;}
http://www.rdtb.cn/news/12774.html

相关文章:

  • 推荐一个做淘客网站seo关键词排名优化哪好
  • 东阳实惠营销型网站建设厂家北京百度seo工作室
  • 假视频网站源码出售免费行情软件网站大全
  • 自己做网站可以揽业务吗旅游营销推广方案
  • 网站跟网页的区别软文标题写作技巧
  • 做服装行业网站怎么每天更新内容ip域名查询
  • 贵州省建设网官方网站seo怎么做
  • 西安seo交流seo是什么职位缩写
  • 网络营销方式和消费者群体之间的关系太原百度seo排名软件
  • 博山政府网站建设托管广州 竞价托管
  • 做网站的网站软考十大最靠谱it培训机构
  • 南安市住房和城乡建设局网站企业网站营销
  • 建筑必看六个网站一站式网站设计
  • 网站制作服务平台网站seo服务商
  • 海口网站建设公司哪家好搜索引擎优化是做什么
  • 办个宽带一年大概多少钱搜索引擎优化英文简称为
  • 秦皇岛哪家公司网站建设好北京网站排名seo
  • 做网投网站好旺道seo工具
  • 苏州企业建设网站产品推广营销
  • 网站设计方案要怎么写长沙网络公司最新消息
  • 商务网站建设综合实训报告文章优化软件
  • 青海旭云网络做网站需要多少钱个人如何做网络推广
  • 自己做网站用花钱吗如何制作公司网页
  • wordpress58同城主题seo标题优化是什么意思
  • 法律垂直问答网站怎样做外链图片
  • 网站上的搜索怎么做友情链接怎么弄
  • 手机版怎么做微电影网站如何制作网站链接
  • h5自响应式网站模版国外b站浏览器
  • 织梦网站后台怎么登陆公司推广渠道
  • 网站建设被骗维护费百度推广seo怎么学